26

我正在使用 Aspose.Cells 以编程方式构建 Excel 文档。这很好用。但是,其中一个单元格是一个原始 HTML 块。我想知道是否可以告诉 Excel(以任何方式,包括 GUI - 您不需要知道 Aspose API)来解析和显示单元格为 HTML。现在,它只是以文本格式、标签等形式显示为原始 HTML。

我知道 Excel 能够将 HTML 粘贴到其中,但它看起来只是自己解析它,然后 Excel 为您处理它,它不存储 HTML,所以它实际上并没有解析它并显示它作为 HTML。另外,我不知道如何复制这个粘贴功能。

谢谢。

4

4 回答 4

14

不幸的是,答案是否定的。

Excel 有两个 HTML 选项:

  • 打开一个 HTML 文件,它会渲染 HTML,但不会在单元格中包含任何实际的 HTML
  • 将 HTML 存储在单元格中,但作为未格式化的文本。

您可能会想出一个宏,让您在单元格中输入 HTML,然后将该 HTML 保存为文档,在另一个 Excel 实例中打开它,然后获取该格式化的 HTML 并将其放入原始文档中;这样你就会有两列,一列是 HTML,一列是输出。不过会非常难看。不要这样做:0)

于 2009-12-04T00:35:36.200 回答
9

在 excel 中粘贴 html 数据将导致 html 在 excel 中正确显示。这样做的一个问题是回车和制表符将被粘贴到下一个单元格。

Dim objData As New DataObject
objData.SetText(sHTML)
Clipboard.SetDataObject(objData)
objRange.PasteSpecial()

将使用格式正确的文本填充单元格

于 2011-12-14T16:04:43.657 回答
0

这段代码在一个单元格上为我工作(受@Rick 的回答启发,但由于Clipboard.SetDataObject(objData)导致错误并且也objRange.PasteSpecial()没有工作而进行了一些更改):

Private Sub Worksheet_Change2(ByVal Target As Range, ByVal sht As Worksheet)
     Dim objData As DataObject 'Set a reference to MS Forms 2.0'
     Dim sHTML As String
     Dim sSelAdd As String
     Application.EnableEvents = False     
     objData = New DataObject
     sHTML = Target.Text
     objData.SetText sHTML
     objData.PutInClipboard
     sht.PasteSpecial Format:="Unicode Text"
     Application.EnableEvents = True
End Sub

Sub test()
     Dim rng As Range
     Set rng = ActiveSheet.Range("F15") 'cell to change'
     Worksheet_Change2 rng, ActiveSheet 
End Sub

有关更多详细信息,请参阅此帖子

我想稍微调整一下它应该不会太难,它适用于整个工作表,而不仅仅是一个特定的单元格,您可能应该添加一些 if 条件来包装此代码以防止错误,请参阅此帖子了解一些更多信息

于 2014-03-23T13:46:10.623 回答
0

我发现了一个有趣的 YouTube 视频,它展示了如何使用 Web 浏览器控件在 Microsoft Excel 中创建一个简单的 HTML 解释器 (VBA)。在文本框中输入您的 HTML 和 CSS 代码,表单会将 HTML 转换为 Web 预览。

Microsoft Excel 2010/2007 中的 HTML 解释器 - 直接写入 Web 浏览器

于 2016-10-28T14:10:30.773 回答