2

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

我尝试了此处列出的几种方法 -如何在 DOCX 中使用 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");

有任何想法吗?

4

1 回答 1

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 打开并执行您想要的任何类型的附加操作。

于 2013-10-02T20:09:16.003 回答