FreeMarker导出word无法打开

问题描述

使用freemarker导出word,打开时提示“很抱歉,无法打开xxxx.docx,因为内容有问题”。

原因

生成的docx文件中存在一个条形图,且条形图的数据量超过6个,但是word中生成条形图的颜色只有6种,因此在设置颜色图例时只能是1-6循环,不在该范围的数字会导致内容有问题。

解决方案

将docx文件修改后缀名为zip文件,解压后,找到../word/charts/chart1.xml文件,打开该文件,查找<c:ser></c:ser>标签,条形图中的每一行代表一个<c:ser>标签,在该标签内查找如下内容:

<a:solidFill>
	<a:schemeClr val="accent1"/>
</a:solidFill>

accent1后边的数字1即为要修改的内容,按照<c:ser>标签的顺序,从1-6循环即可。
模板如下所示:

<#if voList?? && voList?size gt 0>
<#list vo as item>
<!-- 省略部分内容 -->
<a:solidFill>
	<#if item_index lt 6>
		<a:schemeClr val="accent${item_index+1}"/>
	<#else>
		<a:schemeClr val="accent${item_index%6+1}"/>
	</#if>
</a:solidFill>
<!-- 省略部分内容 -->
</#list>
</#if>
```
posted @ 2021-08-17 14:56  一步一年  阅读(816)  评论(0编辑  收藏  举报