我试图在不使用任何第三方库的情况下创建Microsoft Word文档。我想做的是:
到目前为止我能够做到。我想将其导出为* .docx格式。但是,当我这样做时,它会抛出异常,当我尝试打开它时。
错误消息:文件已损坏且无法打开
但是,当我将其保存为* .doc时,我可以打开word文档。
任何想法,可能是错的。我是否需要使用任何库将其导出到docx文件?
由于
答案 0 :(得分:0)
Docx与doc不向后兼容。 Docx是一种压缩格式:Docx Tag Info。
我建议你为docx格式创建另一个模板,因为格式是如此不同。
答案 1 :(得分:0)
此外,您可能希望检查您的代码是否正在编写正确的编码。在我使用正确的编码之前,当我将其转换为.docx格式时,我得到了不兼容的奇怪字母。为此,我在输入流中实现了它:
InputStreamReader isr= new InputStreamReader(template.getInputStream(entry), "UTF-8");
BufferedReader fileContents = new BufferedReader(isr);
我使用枚举作为条目,但是" UTF-8"将它放在正确的格式并消除奇数字符。我也得到了#34; null"在某些xml的末尾键入了,所以我把它取出来(我把每个文件的内容都带到了一个字符串中,所以无论如何我都可以操作它):
String ending = "null";
while(sb.indexOf(ending) != -1){
sb.delete(sb.indexOf(ending), (sb.indexOf(ending) + ending.length()));
}
某人是我投入使用的字符串制作者。这个问题可能已经用UTF-8解决了,但是我在实现编码之前修复了它,所以我想把它包括起来以防它最终出现问题。我希望这有帮助。