我想从现有的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");
有什么想法吗?
答案 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打开,并执行您想要的任何类型的其他操作。