问题描述
使用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>
```