vb.net文档生成,处理大于&小于Word中的符号

时间:2017-02-09 13:16:54

标签: asp.net .net vb.net ms-word word-automation

我们使用TinyMCE编辑器将Rich Text存储在MS SQL数据库中。

使用“&lt;”时&安培; “&gt;” 中符号,TinyMCE将这些转换为HTML转义字符&amp; lt;和&amp; gt;例如:<p>&lt;This is some test information then sometime I use this&gt;</p>

我们尝试使用文档自动化在Microsoft Word文档中导出这些符号,但这些符号不会出现在文档中。

    Function PreFormatHTML(ByVal html As String) As String

        If String.IsNullOrEmpty(html) Then Return html

        html = WebUtility.HtmlDecode(html)

        Return html

    End Function

Dim SumRng As Word.Range = objWordDoc.Bookmarks.Item("bSummary").Range

SumRng.Text = PreFormatHTML(GeneralComponent.CheckReadNull(SqlReader.Item("Summary")))

这也行不通。我正在使用Word 2013和TinyMCE文本编辑器。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果没有看到完整的html,我只能做出一个假设,但我建议使用WebUtility.HtmlDecode

  

将已经过HTML编码的HTTP传输字符串转换为已解码的字符串。

这就是你如何使用它:

html = WebUtility.HtmlDecode(html)

使用Word这是我测试的方式:

Dim s As String = "&lt;this is some text and I'm wondering what to do&gt;"

Dim wrd As New Word.Application
Dim doc As Word.Document = wrd.Documents.Add()
Dim para As Word.Paragraph = doc.Content.Paragraphs.Add()

para.Range.Text = WebUtility.HtmlDecode(s)

这就是我Document中的文字:

enter image description here

根据OP的评论编辑:

Dim s As String = "<p>&lt;This is some test information then sometime I use this&gt;</p>"

Dim wrd As New Word.Application
Dim doc As Word.Document = wrd.Documents.Add()
Dim para As Word.Paragraph = doc.Content.Paragraphs.Add()

para.Range.Text = WebUtility.HtmlDecode(s)

此代码在Document中生成以下输出:

enter image description here

根据OP的更新问题进行编辑:

我创建了一个名为test.docx的文档,并添加了一个名为bSummary的书签。我这样做是为了试图复制OP的代码。

Dim s As String = "<p>&lt;This is some test information then sometime I use this&gt;</p>"

Dim wrd As New Word.Application
Dim doc As Word.Document = wrd.Documents.Open("C:\test.docx")

Dim SumRng As Word.Range = doc.Bookmarks.Item("bSummary").Range
SumRng.Text = PreFormatHTML(s)

输出与上面相同。这让我认为传递给PreFormatHTML的任何东西都不是你认为的那样。 GeneralComponent.CheckReadNull(SqlReader.Item("Summary")))是否将以下字符串传递给PreFormatHTML; <p>&lt;This is some test information then sometime I use this&gt;</p> <?/ s的>

OP已确认HTML已按预期从PrrFormatHTML返回。这些问题似乎与Document有关。它可能与OP正在使用的Word Interop版本有关。我正在使用Microsoft Word 16.0 Object Library,而OP正在使用Microsoft Word 15.0 Object Library