Mar*_*kus 2 java ms-word apache-poi
我想从现有dotx模板中创建新文档.
我尝试了这里列出的几种方法 - 如何在带有POI的DOCX中使用预定义格式?但它们都不起作用.
设置样式没有任何影响.
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");
Run Code Online (Sandbox Code Playgroud)
直接从模板创建文档会破坏新创建的文档,MS Word无法打开它.抱怨文档内部存在问题,没有任何具体细节.
XWPFDocument document = new XWPFDocument(new FileInputStream("template.docx");
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我发现完成此任务的最简单方法是使用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);
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,"src"和"dest"都是java"File"对象.
保存文件后,您可以将其作为XWPFDocument打开,并执行您想要的任何类型的附加操作.