「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」
多系图表
{{var}}
- 多系列图表指的是条形图(3D条形图)、柱形图(3D柱形图)、面积图(3D面积图)、折线图(3D折线图)、雷达图等。
- 记性好的应该还记得上面
RenderData那张图吧。关于图表视图今天我们把焦点转移到ChartMultiSeriesRenderData
- 关于图表他的基本数据结构如下
- 首先我们先来制作模板,多系图标也是一种引用标签,既然我们想要的是多系图标那么我们的模板中就必须先创建一份图表出来。记得word打开哦
- 然后修改图表,实际上给图表绑定一个变量
- 然后就开始准备数据就可以了
@Test
public void multipChartTest() {
String name = "multipChart";
Map<String, Object> map = new HashMap<>();
ChartMultiSeriesRenderData chart = new ChartMultiSeriesRenderData();
chart.setChartTitle("MyChart");
chart.setCategories(new String[] { "中文", "English" });
List<SeriesRenderData> seriesRenderData = new ArrayList<>();
seriesRenderData.add(new SeriesRenderData("countries", new Double[] { 15.0, 6.0 }));
seriesRenderData.add(new SeriesRenderData("speakers", new Double[] { 223.0, 119.0 }));
chart.setSeriesDatas(seriesRenderData);
map.put("barChart", chart);
init(name,map);
}
- 看下效果
其它图表
- 在官网中还有单系列图表、组合图表这里就不多做介绍了,总结下来他们都是引用标签。完全再去word玩的熟不熟。
原理
-
createRunTemplate:参考DefaultRunTemplateFactory.createRunTemplate方法,主要是将chart对象封装到pol-tl所需对象中
-
resolveCharts:循环word中所有的图表,找出需要解析的图表封装成对象
-
resolveChart:找到图表数据对应EXCEL的第一个sheet的第一个单元格,按照poi-tl解析模板的方式解析,若满足条件,则封装成poi-tl所需的MetaTemplate对象
-
resolveXWPFChart:完全参考自TemplateResolver.resolveXWPFRuns方法
-
parseTemplateFactory:增加XWPFChart的判断
总结
- poitl的功能简直太强大了。有了它我玩转office