【发布时间】:2020-01-17 10:16:26
【问题描述】:
现在,我正在尝试从现有的 .xlsx
修改以下标签图表图像:
图表已经根据我想要的值修改了它们的公式和值,但是这些数字仍然从图表中的先前值中获取它们的值。我怎样才能改变它们?我一直在寻找以前的问题,据推测用于获取当前标签值(在修改它们之前)的方法如下:
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(2).getVal().getNumRef().getNumCache()
获得的图纸是我的工作表中的以下一张:
XSSFDrawing drawing = sheet.createDrawingPatriarch();
但我得到一个包含 107 个值的列表...所以我不确定它是否正确。我不知道我需要修改什么。我会很感激一些帮助。
关于我如何修改图表的最小示例:
此 excel 表有五个系列列表,其中一个公式基于其他 excel 表。所以我做了以下代码:
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(0).getVal().getNumRef().setF("PERD_POLICY!$S$15:$S$" + lineasPerdPolicy + "");
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(0).getCat().getNumRef().setF("PERD_POLICY!$Q$15:$Q$" + lineasPerdPolicy);
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(1).getVal().getNumRef().setF("PERD_POLICY!$T$15:$T$" + lineasPerdPolicy);
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(1).getCat().getNumRef().setF("PERD_POLICY!$Q$15:$Q$" + lineasPerdPolicy);
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(2).getVal().getNumRef().setF("PERD_POLICY!$U$15:$U$" + lineasPerdPolicy);
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(2).getCat().getNumRef().setF("PERD_POLICY!$Q$15:$Q$" + lineasPerdPolicy);
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(3).getVal().getNumRef().setF("PERD_POLICY!$V$15:$V$" + lineasPerdPolicy);
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(3).getCat().getNumRef().setF("PERD_POLICY!$Q$15:$Q$" + lineasPerdPolicy);
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(4).getVal().getNumRef().setF("PERD_POLICY!$W$15:$W$" + lineasPerdPolicy);
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(4).getCat().getNumRef().setF("PERD_POLICY!$Q$15:$Q$" + lineasPerdPolicy);
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(5).getVal().getNumRef().setF("PERD_POLICY!$R$15:$R$" + lineasPerdPolicy);
drawing.getCharts().get(0).getCTChart().getPlotArea().getLineChartList().get(0).getSerList().get(5).getCat().getNumRef().setF("PERD_POLICY!$Q$15:$Q$" + lineasPerdPolicy);
lineasPerdPolicy 是一个变量,我用来计算我们从中获取值的工作表中的最后一行。工作表 "PERD_POLICY" 。该图表基于年份中的月份。我现在向当前的 serList 添加了一个新值,直到 2019 年 12 月。但绿色图表的最后一个标签显示为 9,66。该值来自 2019 年 10 月。
我认为使用以下图片会更好。这个显示最后一个标签的值是什么:
而另一张图片中选择的值是我想在标签中显示的值,9,75
The graph value I want to show in the label
如果您不懂任何单词,请告诉我,因为我的 excel 是西班牙语。 价值 --> 价值 Punto --> 点
【问题讨论】:
-
图表数据标签显示图表数据基础的值。因此,如果您说“图表已经修改了我想要的公式和值”。那么这没有正确完成,并且数据基础没有正确更改。请在minimal reproducible example 中展示你是如何做到这一点的。
-
嗨!我修改了我的问题。如果您需要更多信息,请告诉我。谢谢!
标签: java excel apache-poi