使用 docx 工厂设置不同的 header
Set different header using docx factory
我正在评估 docxfactory api,它有很好的功能。我试图将 header 和页脚添加到 docx 模板中,但效果很好。但是,我希望每个页面都有不同的 header 和页脚。例如,我需要在每个客户的 header 中显示客户名称,在页脚部分显示客户地址。本页body会有其他客户订单。每个客户都必须从新页面开始。我尝试了以下示例,但 header 对所有客户都是相同的。 header 没有改变。我尝试在文档中添加分节符,但没有用。我搜索了docx工厂论坛,但找不到。不确定这是不是正确的地方。
public class Dp1 {
public static void main(String argv[]) {
docpaging();
}
public static void docpaging() {
String inputFile = "D:\fields.docx";
String compileFile = "D:\fields.dfw";
String outputFile = "D:\fields_output.docx";
try {
WordProcessingCompiler.compile(inputFile, compileFile);
long startTime = System.currentTimeMillis();
WordProcessingMerger.load(compileFile);
for (int j = 0; j < 3; j++) {
WordProcessingMerger.setClipboardValue("_Header", "PrintDate", (double) j);
WordProcessingMerger.paste("Account");
for (int i = 0; i < 3; i++) {
WordProcessingMerger.setClipboardValue("Line", "LineDate", new Date());
WordProcessingMerger.setClipboardValue("Line", "LineAmt", (double) i);
WordProcessingMerger.setClipboardValue("Line", "LineDesc", "Desc" + i);
WordProcessingMerger.paste("Line");
}
}
WordProcessingMerger.save(outputFile);
System.out.println("Completed (in " + (double) (System.currentTimeMillis() - startTime) / 1000 + " seconds).");
openFile(outputFile, false);
} catch (Throwable e) {
System.err.println(e);
}
}
}
我无法附加 docx 示例。它可以从 docxfactory.com 下载。模板截图如下。我试图用不同的值替换 header 中的占位符 PrintDate,但它始终显示第一个值。甚至,我尝试在文档中添加分页符,也没有用。
谢谢。
docxfactory 目前的工作方式是,如果粘贴不同的部分,它会创建一个新部分(具有不同的页眉和页脚)。这是目前唯一会强制创建新部分的情况。
可以做的是,如果更改 _header 或 _footer 中的字段,它会强制创建一个新部分,以便反映这些更改。这实际上是一个很小的变化。我们鼓励您在 github 上自己进行更改,或者等我来做:) 如果情况紧急,请随时直接与我联系。
暂时,您可以只将详细信息放在页面的顶部和底部,而不使用节页眉和页脚吗?查看分页章节,了解可展开以填满页面的页面。
请在 github 加入项目。
顺便说一句,新词和 excel 版本即将推出,其中包含许多新功能。
爆料,项目是我写的
爱,
阿龙
我正在评估 docxfactory api,它有很好的功能。我试图将 header 和页脚添加到 docx 模板中,但效果很好。但是,我希望每个页面都有不同的 header 和页脚。例如,我需要在每个客户的 header 中显示客户名称,在页脚部分显示客户地址。本页body会有其他客户订单。每个客户都必须从新页面开始。我尝试了以下示例,但 header 对所有客户都是相同的。 header 没有改变。我尝试在文档中添加分节符,但没有用。我搜索了docx工厂论坛,但找不到。不确定这是不是正确的地方。
public class Dp1 {
public static void main(String argv[]) {
docpaging();
}
public static void docpaging() {
String inputFile = "D:\fields.docx";
String compileFile = "D:\fields.dfw";
String outputFile = "D:\fields_output.docx";
try {
WordProcessingCompiler.compile(inputFile, compileFile);
long startTime = System.currentTimeMillis();
WordProcessingMerger.load(compileFile);
for (int j = 0; j < 3; j++) {
WordProcessingMerger.setClipboardValue("_Header", "PrintDate", (double) j);
WordProcessingMerger.paste("Account");
for (int i = 0; i < 3; i++) {
WordProcessingMerger.setClipboardValue("Line", "LineDate", new Date());
WordProcessingMerger.setClipboardValue("Line", "LineAmt", (double) i);
WordProcessingMerger.setClipboardValue("Line", "LineDesc", "Desc" + i);
WordProcessingMerger.paste("Line");
}
}
WordProcessingMerger.save(outputFile);
System.out.println("Completed (in " + (double) (System.currentTimeMillis() - startTime) / 1000 + " seconds).");
openFile(outputFile, false);
} catch (Throwable e) {
System.err.println(e);
}
}
}
我无法附加 docx 示例。它可以从 docxfactory.com 下载。模板截图如下。我试图用不同的值替换 header 中的占位符 PrintDate,但它始终显示第一个值。甚至,我尝试在文档中添加分页符,也没有用。
谢谢。
docxfactory 目前的工作方式是,如果粘贴不同的部分,它会创建一个新部分(具有不同的页眉和页脚)。这是目前唯一会强制创建新部分的情况。
可以做的是,如果更改 _header 或 _footer 中的字段,它会强制创建一个新部分,以便反映这些更改。这实际上是一个很小的变化。我们鼓励您在 github 上自己进行更改,或者等我来做:) 如果情况紧急,请随时直接与我联系。
暂时,您可以只将详细信息放在页面的顶部和底部,而不使用节页眉和页脚吗?查看分页章节,了解可展开以填满页面的页面。
请在 github 加入项目。
顺便说一句,新词和 excel 版本即将推出,其中包含许多新功能。
爆料,项目是我写的
爱, 阿龙