You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:25:41