我们使用TinyMCE编辑器将Rich Text存储在MS SQL数据库中。
使用“&lt;”时&安培; “&gt;” 中符号,TinyMCE将这些转换为HTML转义字符&amp; lt;和&amp; gt;例如:<p><This is some test information then sometime I use this></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文本编辑器。
有什么建议吗?
答案 0 :(得分:1)
如果没有看到完整的html
,我只能做出一个假设,但我建议使用WebUtility.HtmlDecode:
将已经过HTML编码的HTTP传输字符串转换为已解码的字符串。
这就是你如何使用它:
html = WebUtility.HtmlDecode(html)
使用Word
这是我测试的方式:
Dim s As String = "<this is some text and I'm wondering what to do>"
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
中的文字:
根据OP的评论编辑:
Dim s As String = "<p><This is some test information then sometime I use this></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
中生成以下输出:
根据OP的更新问题进行编辑:
我创建了一个名为test.docx
的文档,并添加了一个名为bSummary
的书签。我这样做是为了试图复制OP的代码。
Dim s As String = "<p><This is some test information then sometime I use this></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><This is some test information then sometime I use this></p>
<?/ s的>
OP已确认HTML已按预期从PrrFormatHTML
返回。这些问题似乎与Document
有关。它可能与OP正在使用的Word Interop版本有关。我正在使用Microsoft Word 16.0 Object Library
,而OP正在使用Microsoft Word 15.0 Object Library
。