Hi Alexey,
The problem seems to be better in docx, however, once I change everything to docx, the word file it generates is corrupt
Imports Aspose.Words
Imports Aspose.Words.Reporting
Imports System.Data
Imports Aspose.Words.Fields
Imports System.IO
Partial Class _Default
Inherits System.Web.UI.Page
Private mBuilder As DocumentBuilder
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim l As New Aspose.Words.License
l.SetLicense("C:\Aspose.Custom.lic")
Dim doc As Document = New Document("c:\test.docx")
AddHandler doc.MailMerge.MergeField, AddressOf HandleMergeField
Dim baseDT As New DataTable
mBuilder = New DocumentBuilder(doc)
'Dim documentFormFields As FormFieldCollection = doc.Range.FormFields
'Dim formField1 As FormField = documentFormFields(3)
baseDT.Columns.Add("ID")
baseDT.Columns.Add("ID2")
baseDT.Columns.Add("ID3")
baseDT.Rows.Add(New Object() {1, 1, 1})
baseDT.Rows.Add(New Object() {2, 2, 2})
baseDT.Rows.Add(New Object() {3, 3, 3})
baseDT.TableName = "Base"
doc.MailMerge.ExecuteWithRegions(baseDT)
doc.Save("Minutes.docx", SaveFormat.Docx, Aspose.Words.SaveType.OpenInBrowser, Response)
End Sub
Private Sub HandleMergeField(ByVal sender As Object, ByVal e As MergeFieldEventArgs)
' We decided that we want all boolean values to be output as check box form fields.
'If TypeOf e.FieldValue Is Boolean Then
' ' Move the "cursor" to the current merge field.
' mBuilder.MoveToMergeField(e.FieldName)
' ' It is nice to give names to check boxes. Lets generate a name such as MyField21 or so.
' Dim checkBoxName As String = String.Format("{0}{1}", e.FieldName, e.RecordIndex)
' ' Insert a check box.
' mBuilder.InsertCheckBox(checkBoxName, CBool(e.FieldValue), 0)
' ' Nothing else to do for this field.
' Return
'End If
' Another example, we want the Subject field to come out as text input form field.
Select Case e.FieldName
Case "ID"
mBuilder.MoveToMergeField(e.FieldName)
mBuilder.InsertTextInput(e.FieldValue & "-" & "1", TextFormFieldType.RegularText, "", " ", 0)
Case "ID2"
mBuilder.MoveToMergeField(e.FieldName)
mBuilder.InsertTextInput(e.FieldValue & "-" & "2", TextFormFieldType.DateText, "", " ", 0)
Case "ID3"
mBuilder.MoveToMergeField(e.FieldName)
mBuilder.InsertComboBox(e.FieldValue & "-" & "3", New String() {"One", "Two", "Three"}, 0)
End Select
If e.FieldName = "ID" Then
End If
End Sub
End Class