【问题标题】:How to repeat same merge field multiple time in aspose?如何在 aspose 中多次重复相同的合并字段?
【发布时间】:2016-10-13 06:53:19
【问题描述】:

您好,我有一个场景,我有位置列表。在我的文档中,我有合并字段 location_num。我想动态打印我的文档中的所有 location_num 值。

【问题讨论】:

    标签: aspose aspose.words aspose.pdf


    【解决方案1】:

    您可以使用Aspose.Words 来满足此要求。

    请参阅 Aspose.Words 文档的以下部分: How to Execute Mail Merge

    这里是示例代码:

    Document doc = new Document(filePath);
    doc.MailMerge.Execute(GetDataTable());
    doc.Save(MyDir + @"16.10.0.docx");
    

    及GetDataTable方法的定义

    private static DataTable GetDataTable()
    {
        DataTable dataTable = new DataTable("table");
    
        dataTable.Columns.Add(new DataColumn("location_num"));
    
        DataRow dataRow;
        for (int i = 0; i < 5; i++)
        {
            dataRow = dataTable.NewRow();
            dataRow[0] = "location value " + i;
            dataTable.Rows.Add(dataRow);
        }
    
        return dataTable;
    }
    

    希望,这会有所帮助。我与 Aspose 合作,担任开发人员宣传员。

    【讨论】:

    • 那是java代码吗?我没有得到 dataTable.Columns 或 dataTable.Rows 选项。
    【解决方案2】:

    请在下面找到Aspose.Words for Java 实现相同的代码:

    import com.aspose.words.*;
    import com.aspose.words.net.System.Data.DataColumn;
    import com.aspose.words.net.System.Data.DataRow;
    import com.aspose.words.net.System.Data.DataTable;
    
    public class Program {
    
        public static void main(String[] args) throws Exception {
    
            License lic = new License();
            lic.setLicense("D:\\temp\\Aspose.total.java.lic");
    
            Document doc = new Document("D:\\temp\\input.docx");
            doc.getMailMerge().execute(GetDataTable());
            doc.save("D:\\temp\\16.10.0.docx");
        }
    
        private static DataTable GetDataTable()
        {
            DataTable dataTable = new DataTable("table");
            dataTable.getColumns().add("location_num");
    
            DataRow dataRow;
            for (int i = 0; i < 5; i++)
            {
                dataRow = dataTable.newRow();
                dataRow.set(0, "location value " + i);
                dataTable.getRows().add(dataRow);
            }
    
            return dataTable;
        }
    }
    

    希望,这会有所帮助。我与 Aspose 合作,担任开发人员宣传员。

    【讨论】:

    • 此解决方案有效,但有一个小问题,它为每次迭代添加新页面。我的要求是,在同一页面上,如果页面已满,我想逐行添加此合并字段,那么只有它应该在每次迭代中添加新页面。谢谢:)
    • 您需要使用 Aspose.Words 的 Mail Merge with Regions 功能,例如doc.getMailMerge().executeWithRegions(GetDataTable());我与 Aspose 一起担任开发人员宣传员。
    • 这不起作用 - 它没有替换合并字段。
    • 我们需要自己测试这个场景;由于您无法在此论坛中附加文件,请将您的文件和代码发布到Aspose.Words forum。请压缩并附上您的 1) 输入,2) Aspose.Words 生成的输出 Word 文档和 3) 源代码在您的线程中进行测试。我与 Aspose 一起担任开发人员宣传员。
    猜你喜欢
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2021-12-30
    • 2022-09-23
    • 2012-11-07
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多