我正在使用来自SQL数据库的数据集进行邮件合并。我正在检索的数据存储在数据库中,其中包含一些HTML标记,例如:
我的一个合并字段包含以下文字:
<ul><li><strong>Bullet Title 1</strong>Bullet content 1.</li><li><strong>Bullet Title 2</strong>Bullet content 2.</li></ul>
我的另一个合并字段包含以下文字:
<strong>List of employees</strong><br />First Name< br />Second Name<br />Third Name
现在我正在使用Spire.Doc,但是当文档呈现时,字段显示html标记而不是呈现格式化文本。
以下是我正在使用的代码:
Public Shared Sub FieldMerge(ByVal ds As DataSet, ByRef doc As Document)
'**********************************
'Merging
'**********************************
Dim fieldNames As New List(Of String)()
Dim fieldValues As New List(Of String)()
For Each dtcolumn As DataColumn In ds.Tables(0).Columns
'Add the values to the list of string
fieldNames.Add(dtcolumn.ColumnName)
'**** THIS TEXT COULD HAVE SOME HTML TAGS - HOW TO RENDER THIS IN THE MERGE FIELD???? *****'
fieldValues.Add(ds.Tables(0).Rows(0)(dtcolumn.ColumnName).ToString)
Next
Dim fieldNamesArray As String() = fieldNames.ToArray()
Dim fieldValuesArray As String() = fieldValues.ToArray()
'Execute the merge
doc.MailMerge.Execute(fieldNamesArray, fieldValuesArray)
End Sub
如何完成合并字段以显示格式化文本而不是html标记?任何建议将不胜感激。
答案 0 :(得分:0)
以下是使用GemBox.Document:
执行此操作的方法Public Shared Sub FieldMerge(ByVal ds As DataSet, ByRef doc As DocumentModel)
AddHandler doc.MailMerge.FieldMerging,
Sub(sender, e)
If e.FieldName = "MyField" Then
e.Field.Content.End.LoadText(e.Value.ToString(), LoadOptions.HtmlDefault)
e.Inline = Nothing
End If
End Sub
doc.MailMerge.Execute(ds.Tables(0))
End Sub
该示例显示了如何通过处理FieldMerging
事件来自定义邮件合并过程。带有&#34; MyField&#34;的合并字段name应该收到一个HTML格式的字符串,所以&#34; MyField&#34; DataTable
中的列应包含HTML文字
另外,您可以看到邮件合并可以将DataTable
作为数据源。您可以找到mail merge example here和mail merge documentation here。
此外,我认为您会发现以下文章很有趣:How to insert HTML and RTF content during the mail merge process