在Apache POI-TL中使用SingleSeriesCharts:模板图表标签设置疑问
解决Word模板中图表标记的问题
你用的是poi-tl库生成带图表的Word文档对吧?要让代码识别模板里的图表,核心是给模板里的占位图表加书签,书签名称要和你代码里map.put("chart", pie)的key完全一致,步骤如下:
1. 制作模板里的占位图表
打开你的chart.docx模板,先插入一个临时的饼图/柱状图(随便填点测试数据就行,后面会被代码里的真实数据替换掉)。
2. 给图表添加书签
- 点击选中整个图表(确保图表周围出现白色的选中边框)
- 切换到Word的「插入」选项卡,找到「书签」按钮点击
- 在弹出的对话框里,输入书签名称
chart(和你代码里map的key一模一样,大小写敏感),然后点击「添加」
3. 验证代码
你的代码本身没问题,只要模板里的书签名称和map.put("chart", pie)的key对应上,运行代码后,模板里的占位图表就会被替换成你生成的pie图表。
另外注意:
- 确保你用的poi-tl版本是1.12.0及以上,旧版本可能不支持图表替换
- 不要删除模板里的占位图表,代码是基于这个占位图表的样式(比如颜色、布局)来替换数据的
你的代码示例:
Map<String, Object> map = new HashMap<>(); String c[] = {"Male", "Female", "Others"}; Number x[] = {23,13.4,11}; File t = new File(System.getProperty("user.dir")+"/chart.docx"); ChartSingleSeriesRenderData pie = Charts.ofSingleSeries("Test", c).series("data", x).create(); map.put("chart", pie); // 这里的"chart"必须和模板里的书签名称一致 XWPFTemplate.compile(t).render(map).writeToFile("out.docx");
内容的提问来源于stack exchange,提问作者javalove
相关产品推荐
相关产品推荐

