将Microsoft Word xml文件导出到docx

时间:2014-01-26 06:01:34

标签: php xml ms-word docx

我试图在不使用任何第三方库的情况下创建Microsoft Word文档。我想做的是:

  • 在Microsoft Word中创建模板文档
  • 将其另存为XML文件
  • 阅读此XML文件并使用PHP填充数据

到目前为止我能够做到。我想将其导出为* .docx格式。但是,当我这样做时,它会抛出异常,当我尝试打开它时。

错误消息:文件已损坏且无法打开

但是,当我将其保存为* .doc时,我可以打开word文档。

任何想法,可能是错的。我是否需要使用任何库将其导出到docx文件?

由于

2 个答案:

答案 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解决了,但是我在实现编码之前修复了它,所以我想把它包括起来以防它最终出现问题。我希望这有帮助。