使用Apache POI HWPF从dotx模板创建文档

时间:2013-04-28 15:08:20

标签: java ms-word apache-poi

我想从现有的dotx模板中创建新文档。

我尝试了这里列出的几种方式 - How can I use predefined formats in DOCX with POI?但它们都不起作用。

设置样式无任何影响。

XWPFDocument template = new XWPFDocument(new FileInputStream(new File("template.dotx")));       

XWPFDocument doc = new XWPFDocument();      
XWPFStyles newStyles = doc.createStyles();
newStyles.setStyles(template.getStyle());

XWPFParagraph para = doc.createParagraph();
para.setStyle("Heading1");

XWPFRun run = para.createRun();
run.setText("Heading 1");

直接从模板创建文档会破坏新创建的文档,MS Word无法打开它。抱怨文档内部存在问题,没有任何具体细节。

XWPFDocument document = new XWPFDocument(new FileInputStream("template.docx");

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

我发现实现此目的的最简单方法是使用OPCPackage的“replaceContentType”方法。

OPCPackage pkg = OPCPackage.open(src.getAbsolutePath());
pkg.replaceContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml",
                "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml");
pkg.save(dest);

在上面的代码中,“src”和“dest”都是java“File”对象。

保存文件后,您可以将其作为XWPFDocument打开,并执行您想要的任何类型的其他操作。