2017-09-15 5 views
0

Ich mache einen Seriendruck mit einem Dataset, das aus einer SQL-Datenbank stammt. Die Daten, die ich Abrufens in der Datenbank mit einigen HTML-Markups in ihm gespeichert ist, Beispiel:Seriendruck HTML-formatierter Text von der Datenbank zum Word-Dokument

Einer meiner Druckfelder enthält diesen Text:

<ul><li><strong>Bullet Title 1</strong>Bullet content 1.</li><li><strong>Bullet Title 2</strong>Bullet content 2.</li></ul> 

Ein anderer meiner Druckfelder enthält diesen Text:

<strong>List of employees</strong><br />First Name< br />Second Name<br />Third Name 

Vorerst Spire.Doc verwende ich aber, wenn das Dokument macht, zeigen die Felder, um die hTML-Tags statt den formatierten Text von Rendering.

Unten ist der Code, ich verwende:

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 

Wie kann ich das Seriendruckfeld erreichen den formatierten Text anstelle der HTML-Tags zu zeigen? Alle Ratschläge werden sehr geschätzt.

Antwort

0

Hier ist, wie Sie tun können, dass mit 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 

Das Beispiel zeigt, wie Sie einen Seriendruck Prozess FieldMerging Ereignis durch die Handhabung anpassen können. Das Seriendruckfeld mit einem "MyField" -Namen sollte eine HTML-formatierte Zeichenfolge erhalten, sodass die "MyField" -Spalte in Ihrem DataTable HTML-Text haben sollte.
Auch wie Sie sehen können, kann der Seriendruck DataTable als Datenquelle dauern. Sie können mail merge example here und mail merge documentation here finden.

Auch ich denke, dass Sie den folgenden Artikel interessant finden: How to insert HTML and RTF content during the mail merge process

Verwandte Themen