简体   繁体   English

如何使用Aspose.Words in.Net重复(循环)从现有模板的表中插入书签和书签值

[英]How to insert bookmarks and bookmark values from the table in the existing template repeatedly (in loop) using Aspose.Words in.Net

我尝试使用Aspose.Words在Net中使用Aspose.Words重复(循环)从现有模板的表中插入书签和书签值。

@Manil, @Manil,

You can meet this requirement by using the Mail Merge with Regions feature of 'Aspose.Words for .NET' API. 您可以通过使用“ Aspose.Words for .NET” API的“ 按区域合并邮件”功能来满足此要求。 For example, please see these sample input/output Word documents and try running the following code: 例如,请参阅这些示例输入/输出Word文档,然后尝试运行以下代码:

DataTable dt = GetDataTable();
Document doc = new Document("E:\\temp\\TableStart.docx");
doc.MailMerge.FieldMergingCallback = new HandleMergeField();
doc.MailMerge.ExecuteWithRegions(dt);
doc.Save("E:\\Temp\\19.8.docx");

private static DataTable GetDataTable()
{
    DataTable dataTable = new DataTable("tbl");

    dataTable.Columns.Add(new DataColumn("mf1"));
    dataTable.Columns.Add(new DataColumn("mf2"));
    dataTable.Columns.Add(new DataColumn("mf3"));

    DataRow dataRow;
    for (int i = 0; i < 5; i++)
    {
        dataRow = dataTable.NewRow();
        dataRow[0] = "Some Text " + i;
        dataRow[1] = "Some Bookmaked Text " + i;
        dataRow[2] = "Again Some Text " + i;
        dataTable.Rows.Add(dataRow);
    }

    return dataTable;
}

public class HandleMergeField : IFieldMergingCallback
{
    void IFieldMergingCallback.FieldMerging(FieldMergingArgs e)
    {
        if (e.FieldName.Equals("mf2"))
        {
            DocumentBuilder builder = new DocumentBuilder(e.Document);
            builder.MoveToMergeField(e.FieldName);
            builder.Font.Color = Color.Red;

            builder.StartBookmark("bm_" + e.RecordIndex);
            builder.Write(e.FieldValue.ToString());
            builder.EndBookmark("bm_" + e.RecordIndex);
        }
    }

    void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs args)
    {
        // Do nothing.
    }
}

Hope, this helps. 希望这可以帮助。 I work with Aspose as Developer Evangelist. 我与Aspose一起担任开发人员推广人员。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM