2014-01-26 85 views
1

我正在嘗試創建Microsoft Word文檔而不使用任何第三方庫。我所試圖做的是:將Microsoft Word xml文件導出到docx中

  • 在Microsoft Word中創建一個模板文件
  • 將它保存爲XML文件
  • 閱讀這個XML文件並填充數據在PHP

我我能夠做到這一點。我想將它導出爲* .docx格式。但是,當我這樣做時,它會拋出一個異常,當我嘗試打開它時。

錯誤消息:文件已損壞,無法打開

然而,當我將其保存爲* .DOC,我能打開Word文檔。

任何想法,什麼可能是錯的。我是否需要使用任何庫將其導出到docx文件?

感謝

回答

0

DOCX不符合DOC向後兼容。 Docx是一種壓縮格式:Docx Tag Info

我建議你爲docx格式創建另一個模板,因爲格式是如此不同。

0

此外,您可能想要檢查您的代碼是否正在編寫正確的編碼。在我將它編入正確的編碼之前,我收到了一些奇怪的字母,這些字母在將它轉換爲.docx格式時不兼容。要做到這一點,我實現它沿用InputStream:

InputStreamReader isr= new InputStreamReader(template.getInputStream(entry), "UTF-8"); 
BufferedReader fileContents = new BufferedReader(isr); 

我用這與枚舉的條目,但「UTF-8」將其放在正確的格式,並消除了奇怪的字符。我也在某些xml的末尾輸入「null」,所以我通過將其刪除(我將每個文件的內容帶入一個字符串中,以便我可以操縱它):

String ending = "null"; 
while(sb.indexOf(ending) != -1){ 
sb.delete(sb.indexOf(ending), (sb.indexOf(ending) + ending.length())); 
} 

某人是我把它放入的串口生成器。 UTF-8可能已經解決了這個問題,但是在我實現編碼之前,我已經解決了這個問題,所以我想將它包括在內,以防它最終成爲問題。我希望這有幫助。

相關問題