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
相关产品推荐
相关产品推荐

