我想从我的 Java-App 中的 MS-Word 模板打开一个新文档,但只能设法编辑模板本身。
这是我的情况:在我的 Jar 文件中有一个 word 模板,它被复制到用户指定的位置,因此他/她可以对其进行编辑。之后,应用程序可以打开这个编辑过的模板,将数据插入其中并在word中打开它。这一切都很好(使用 Apache-POI),但最后一步并不完全是我想要的。
通常,当双击一个 word 模板时,Word 会打开一个尚未保存在任何地方的新文档(标题为 Document1)。在我的例子中,Word 打开 word-template 进行编辑(标题为 blablaMyTemplate),这意味着应该从中创建文档的已保存模板。如何使用 Java 从模板打开新创建的文档?
这是我的代码(try/catch 和流关闭省略):
File bbb = new File(new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).getParentFile().getParentFile().getAbsolutePath() + "/blablaMyTemplate.dotx");
if (!bbb.exists()) { //copy file to outside of jar for user editing
Files.copy(Buchungsbegleitblatt.class.getResourceAsStream("bbb.dotx"), bbb.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
File tmp = File.createTempFile("bbb", ".dotx"); //create tmp file to insert data
InputStream in = new FileInputStream(bbb);
OutputStream out = new FileOutputStream(tmp);
XWPFDocument document = new XWPFDocument(in);
//here, some data is filled into the document using Apache-POI (omitted, because it works fine)
document.write(out);
if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().open(tmp); //this opens the template for editing, it does not create a new doc from template
}
问题在于最后一行,但我不知道我还能在这里调用什么。
为了让它更清楚一点,这是我在模板文件上获得的上下文菜单的图像以及应该发生的事情: