XDocReport:生成的 docx 文档错误“Word 在尝试打开文件时遇到错误”

Posted

技术标签:

【中文标题】XDocReport:生成的 docx 文档错误“Word 在尝试打开文件时遇到错误”【英文标题】:XDocReport: generated docx document error "Word experienced an error trying to open the file" 【发布时间】:2021-10-12 23:42:39 【问题描述】:

我正在尝试使用 XDocReport 和 freemarker 生成包含表格的 .docx 格式的报告。

我正在使用列表来打印表格内的数据。

问题是java生成文档时没有报错,但是生成的文档打不开。错误说

Word 在尝试打开文件时遇到错误。

我希望输出是这样的:

我将 XDocReport 2.0.2 与 Office 2016 一起使用。感谢您提供任何帮助。谢谢。

【问题讨论】:

docx 是一个包含大量 xml 文件的 zip 文件。将文件重命名为 rating_report.zip 并查看其中是否可以找到插入的数据。 @ddekany 好吧,根据这个文档github.com/opensagres/xdocreport/wiki/… [/#list] 应该放在@after-row 标记之后。我试图在@after-row 标记之前放置一个[/#list] 并在java 中出错 @Dio 抱歉,我在您回复时删除了我的错误评论... @ddekany 没关系 @AndersLindgren 如何知道我的数据是否已插入?我应该检查什么文件? 【参考方案1】:

右键单击文件。而不是点击“打开”点击“编辑” 就是这样,很简单。

【讨论】:

好吧,右键菜单中的“编辑”命令可能只是通过 Word 使用“打开”命令。正如其他答案和许多 cmets 所解释的那样,.docx 文件是带有特定 xml 文件集的 .zip 文件。【参考方案2】:

所以,经过几天的变通和朋友的帮助,这个问题终于解决了。所以这是我made

我在[#list p.cities as c] 之前添加了@before-row 标签,并且只有一个@after-row 标签。现在,生成的文档可以打开了

【讨论】:

【参考方案3】:

我猜(不知道 XDocReport)[#list p.cities ...] 也应该以 @before-row 为前缀。否则当你对城市进行迭代时,表格行的开始标签不会重复,只有结束标签。

【讨论】:

好吧,不幸的是,没有运气。还是有同样的问题 您应该检查实际输出的 XML。 如何检查输出 XML?我应该检查什么? 一个docx是一个zip文件,解压。我相信它是由模板生成的word/document.xml。找到里面的表。看看有没有明显的问题。就像不平衡的 XML 标记一样。 另外,您是否尝试过简单地使用 word 文件,看看是否删除了哪些部分使其起作用?

以上是关于XDocReport:生成的 docx 文档错误“Word 在尝试打开文件时遇到错误”的主要内容,如果未能解决你的问题,请参考以下文章

doc以及docx文档转html文件(同时解析图片音频和视频)

XDocReport生成报告:通过表(java)中的集合循环

xDocReport - 无法为输入流创建报告

以编程方式使用 M2Doc:生成的 .docx 文档中的错误

使用Ajax下载DOCX文档

python-docx:打开文件时出错-“文件头的魔数错误”/“EOFError”