2017-09-15 228 views
0

我正在做一个邮件合并使用来自SQL数据库的数据集。 ,我取回存储在数据库中有一些HTML标记的数据,例如:邮件合并HTML格式文本从数据库到Word文档

我的一个合并域的包含这样的文字:

<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

这里是你如何能做到与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格式的字符串,因此DataTable中的“MyField”列应该具有HTML文本。
另外,您可以看到邮件合并可以将DataTable作为数据源。你可以找到mail merge example heremail merge documentation here。我想你会发现以下有趣的文章:How to insert HTML and RTF content during the mail merge process