2010-08-23 468 views
4

我编写了一个程序,该程序打开docx软件包,并在“word/document.xml”中更改了一些<w:t>-文本。当我在Microsoft word中打开新生成的docx时,它会给我一个错误 - “文件已损坏”。但如果查看“Open XML SDK Tool”在模板docx和结果docx文件之间的差异 - “word/document.xml”中只有两行更改。请看截图:docx Microsoft Word中的“File is corrupt”错误

enter image description here

程序不触动文档格式,样式或不便。只有文本<w:t>

那么,在Microsoft Word中会出现什么情况会导致“文件已损坏”错误?

而这个错误只出现在Microsoft Word中。例如,在Mac OS X上的OpenOffice和TextEdit打开生成的文件没有任何错误。

我上传these docx文件,所以你可以自己看看。

回答

4

我会盲目猜测,并说您修改的文档包含UNIX风格的行尾。 Word 2003不允许\n行结束,它需要\r\n,而Word 2007/2010更宽容并接受这两个版本。

确保在修改文档时仅使用\r\n

更新:我检查了你的文档,确实XML文档部分使用了一个UNIX风格的行尾。

更新2:您的结果文档中包含其他文件:.DS_Store。将其从档案中移除,文档将打开。

+0

Microsoft Office 2010与“result.docx”给出同样的错误 - “文件已损坏”。另外,我用'unix2dos'命令行工具修复了document.xml中的UNIX风格的行结尾,但仍然没有运气,同样的错误出现。 有什么建议吗? – nukl 2010-08-23 12:50:04

+0

是的,现在它工作。非常感谢! – nukl 2010-08-24 01:34:24

+0

注意。 Word 2007不接受以'pkg:binaryData'元素结尾的'\ n'行,而Word 2010则执行此操作。 – ruvim 2015-04-18 22:54:31