赞
踩
最近在做一个项目,根据代码反推模板格式,渲染数据到word,于是学习了下poi-tl技术。
先把官方文档地址放出来,一些简单的东西都可以上面找到。
然后记录一下简单表格渲染,只需要通过{{}}符号,将渲染的map数据放中间,即可通过下面代码渲染到word。
- //构建 表格列(循环插件)
- LoopRowTableRenderPolicy goods = new LoopRowTableRenderPolicy();
- LoopRowTableRenderPolicy dataLeft = new LoopRowTableRenderPolicy();
- Configure config = Configure.builder().bind("goods", goods).bind("dataLeft", dataLeft).build();
- XWPFTemplate.compile(inPathNew, config).render(map);
-
- //inPathNew 是读取的模板地址
- //config 是配置循环的列map key(这样说更好理解一点)
- //map 是渲染到word的数据
例一、简单文本及表格渲染:
map数据如下:
渲染结果如下:
例二、复杂表格渲染:
map数据如下:
渲染结果:
例三、图表处理
- JSONObject histogramImage = (JSONObject) map.get("histogramImage");
- JSONArray xArray = histogramImage.getJSONArray("x");
- JSONArray yArray = histogramImage.getJSONArray("y");
- ChartMultiSeriesRenderData chart = Charts
- .ofMultiSeries("ChartTitle", new String[] { xArray.getString(0), xArray.getString(1) })
- .addSeries("countries", new Double[] { yArray.getDouble(0),yArray.getDouble(1) })
- .create();
- map.put("histogramImage", chart);
然后word插入图表,
右击 -> 查看可选文字 ->
例四、简单手动画表格
- RowRenderData row0 = Rows.create("姓名", "学历");
- RowRenderData row1 = Rows.create("李四", "博士");
- map.put("mytable", Tables.create(row0, row1));
{{#mytable}} 渲染表格
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。