0

我正在使用来自 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 标签?任何建议将不胜感激。

4

1 回答 1

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事件来自定义邮件合并过程。具有“MyField”名称的合并字段应接收 HTML 格式的字符串,因此您的“MyField”列DataTable应包含 HTML 文本。
此外,您可以看到邮件合并可以DataTable作为数据源。您可以在此处找到邮件合并示例,并在此处找到邮件合并文档

另外我认为您会发现以下文章很有趣:如何在邮件合并过程中插入 HTML 和 RTF 内容

于 2017-09-19T11:51:42.557 回答