vb.net 文档生成,处理大于和小于 Word 中的符号
vb.net Document Generation, Handling Greater Than & Less Than Symbols in Word
我们正在使用 TinyMCE 编辑器将富文本存储在 MS SQL 数据库中。
当使用“<”和“>”符号时,TinyMCE 将它们转换为 HTML 转义字符 < ; >例如:<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 文本编辑器。
有什么建议吗?
没有看到完整的 html
我只能做一个假设但是我建议使用 WebUtility.HtmlDecode:
Converts a string that has been HTML-encoded for HTTP transmission into a decoded string.
您将如何使用它:
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>
?
OP 已确认 HTML 按预期从 PrrFormatHTML
返回。这些问题似乎与 Document
有关。这可能与 OP 正在使用的 Word Interop 版本有关。我正在使用 Microsoft Word 16.0 Object Library
而 OP 正在使用 Microsoft Word 15.0 Object Library
.
我们正在使用 TinyMCE 编辑器将富文本存储在 MS SQL 数据库中。
当使用“<”和“>”符号时,TinyMCE 将它们转换为 HTML 转义字符 < ; >例如:<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 文本编辑器。
有什么建议吗?
没有看到完整的 html
我只能做一个假设但是我建议使用 WebUtility.HtmlDecode:
Converts a string that has been HTML-encoded for HTTP transmission into a decoded string.
您将如何使用它:
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>
?
OP 已确认 HTML 按预期从 PrrFormatHTML
返回。这些问题似乎与 Document
有关。这可能与 OP 正在使用的 Word Interop 版本有关。我正在使用 Microsoft Word 16.0 Object Library
而 OP 正在使用 Microsoft Word 15.0 Object Library
.