FreeMarker给word文档里生成多个柱状图(数据可修改)
项目场景:
上个博客生成了一个静态的柱状图 也就是将柱状图的图片放到word里,这个博客说说 ftl文件里给他设置数据动态
1创建.docx文档模板:
类似于这样的模板


2.生成xml在线解析格式然后转ftl:
类似于这样

它里面会有这样几个标签
<Relationship Id="rId12" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart" Target="charts/chart1.xml"/> <Relationship Id="rId13" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml" Target="../customXml/item2.xml"/>
这两个标签的id 和 Target的值都是可以改变的 ,然后找到它Target 对应的xml文件
比如这样

这两个name值也都是可以变的 当然 对应着这个xml的标签也要变
/word/charts/_rels/chart1.xml.rels 它里面放的应该是柱状图的结构 就是这三个标签对应的Target 不要删除 <Relationship Id="rId16" Type="http://schemas.microsoft.com/office/2011/relationships/chartColorStyle" Target="colors1.xml"/> <Relationship Id="rId15" Type="http://schemas.microsoft.com/office/2011/relationships/chartStyle" Target="style1.xml"/> <Relationship Id="rId14" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/package" Target="../embeddings/Workbook1.xlsx"/>
/word/charts/chart1.xml 它里面放的应该是 柱状图的的数据 就是那根柱子的高低
它里面的标签就是柱状图的数据 例如下图



改动这些数据就可以改动柱状图的数据了
接下来就是去找柱状图放的位置了
<w:body>这个标签里 去找
<w:p>
<w:pPr>
<w:pStyle w:val="2"/>
<w:numPr>
<w:ilvl w:val="0"/>
<w:numId w:val="2"/>
</w:numPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:hint="eastAsia"/>
<w:lang w:val="en-US" w:eastAsia="zh-CN"/>
</w:rPr>
<w:t>柱状图lwh</w:t>
</w:r>
</w:p>
<w:p>
<w:bookmarkStart w:id="0" w:name="_GoBack"/>
<w:r>
<w:drawing>
<wp:inline distT="0" distB="0" distL="114300" distR="114300">
<wp:extent cx="5080000" cy="3810000"/>
<wp:effectExtent l="4445" t="4445" r="20955" b="14605"/>
<wp:docPr id="1" name="图表 1"/>
<wp:cNvGraphicFramePr/>
<a:graphic
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
<a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart">
<c:chart
xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId12"/>
</a:graphicData>
</a:graphic>
</wp:inline>
</w:drawing>
</w:r>
<w:bookmarkEnd w:id="0"/>
</w:p>这里就是放柱状图的位置 它里面会引用上面的pkg标签 也就是柱状图的xml 例如下图

一定要对应最上面那个pkg的id
这样 ftl就改好了
传多个柱状图:
多个柱状图就写个list在那个标签上让他循环 循环的时候要给他唯一标识 否则柱状图都一样
例如下图



然后就是循环柱状图里的数据

如果对您有帮助 请 点赞 转发 ,谢谢 最后生成 就这样

原文作者:LWH21
原文地址: https://blog.csdn.net/LWH21/article/details/109386208
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/LWH21/article/details/109386208
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章