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

Apache POI 5.0.0中如何删除XDDFChartLegend指定图例且不删除对应图表系列

Apache POI 5.x 隐藏指定图例的解决方案

你之前调用legend.getEntries().remove()不生效,是因为这个entries集合是读取现有图例条目生成的临时集合,对它的修改不会同步到底层OOXML结构,所以保存后不会生效。

要实现隐藏指定图例、且不影响对应系列在图表中的展示,直接操作底层CTLegendEntry对象标记删除即可,具体实现代码如下:

import org.apache.poi.xddf.usermodel.chart.XDDFChartLegend;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLegendEntry;

// 获取图表图例对象
XDDFChartLegend legend = chart.getOrAddLegend();

// 填入你需要隐藏的图例对应的索引(索引从0开始,和系列添加顺序一致)
int[] toHideIndexes = {3,4};

for (int index : toHideIndexes) {
    CTLegendEntry hideEntry = CTLegendEntry.Factory.newInstance();
    // 绑定要隐藏的图例索引
    hideEntry.setIdx(index);
    // 标记该图例为删除状态,仅隐藏不影响对应系列的渲染
    hideEntry.setDelete(true);
    // 将配置写入到底层图例结构中
    legend.getCTLegend().addNewLegendEntry().set(hideEntry);
}

操作完成后正常写入Excel文件即可,不需要额外调用其他刷新方法,该方案兼容Apache POI 5.0.0及以上全版本。

内容的提问来源于stack exchange,提问作者Kannan Sundararaj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:45:02