我有一个docx模板,我将其保存为.xml,然后解析内容。 然后我生成一个新的更新的word文档。生成word文档后,我无法打开它。它说“文件腐败”。我按好了。然后它说“如果你想要检索文件,按OK”。我按好了。然后我得到更新的文件。每次都会发生这种情况我创建了与独立java应用程序相同的程序。通过独立Java应用程序生成的文档打开时没有任何错误。谁能让我对此有所了解?我也在服务器端使用了相同的代码。
以下是我用来生成docuemnt的代码。
try {
// Prepare the DOM document for writing
Source source = new DOMSource(doc);
// Prepare the output file
FileOutputStream file = new FileOutputStream(filename);
Result result = new StreamResult(file);
// Write the DOM document to the file
Transformer xformer = TransformerFactory.newInstance()
.newTransformer();
xformer.transform(source, result);
file.close();
} catch (TransformerConfigurationException e) {
System.out.println("Transformation Configuration Excepiton in WriteXMLFile");
} catch (TransformerException e) {
System.out.println("Transformation Excepiton in WriteXMLFile");
} catch (Exception e) {
System.out.println("Transformation Excepiton in WriteXMLFile");
e.printStackTrace();
}
答案 0 :(得分:1)
我使用POI库生成Word文档(.doc,而不是.docx,但它也应该工作)。 使用POI,您可以: - 打开你的word文档 - 使用干净的API编辑任何你想要的东西(不要乱用XML) - 写下结果
答案 1 :(得分:1)
您可以使用POI或docx4j来确保创建有效的Word文档。
答案 2 :(得分:0)
您是否检查过JVM的编码?我遇到了这个问题,最后我发现在Eclipse中我有UTF-8,但在独立时我没有指定编码,因此JVM采用ISO-8559。
请使用参数-Dfile.encoding=UTF-8
进行检查。
答案 3 :(得分:0)
我广泛使用了Apache POI和docx4j,并且说docx4j更加强大,因为它不仅为文档本身提供了更多支持,而且为表格和图像提供了更多支持。 docx4j的很多功能都是自动化的,Apache的POI区域你需要为docx支持做很多手动编码。遗憾的是,对于支持docx的POI,没有做太多工作。我建议使用docx4j,因为他们原生支持打开并保存一个新的.docx文件。