当前位置: 首页 > 知识库问答 >
问题:

系列setTitle的apache poi 4.0空指针

令狐嘉禧
2023-03-14

异常线程"main"java.lang.NullPointerExcema在org.apache.poi.xddf.usermodel.chart.XDDFChartData$Series.set标题(XDDFChartData.java:122)

代码如下:

CellReference cellref = new CellReference("A6"); 

//A6 value = "My Title"

XDDFLineChartData.Series series3 = (XDDFLineChartData.Series)data.addSeries(xs, ys3);
series3.setMarkerSize((short) 6);
series3.setMarkerStyle(MarkerStyle.DIAMOND);

series3.setTitle("My Title",cellref);

我检查了文档,它需要arg0字符串arg1CellReference

谢谢你的回复。

共有1个答案

林威
2023-03-14

要回答如何修复XDDFChartData.Series.setTitle中的错误,请执行以下操作:

在XDDFChartData.Series.setTitle中,使用getSeriesText()时不进行空检查。但是XDDFLineChartData.Series.getSeriesText()当然可能会返回null,因为Series.getTx()可能会返回null。因此,我们需要确保在使用XDDFChartData.series.setTitle之前已经存在一个series文本元素。

...
XSSFChart chart = drawing.createChart(anchor);
...
XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
...
XDDFChartData data = chart.createData(ChartTypes.LINE, bottomAxis, leftAxis);
data.addSeries(...);
data.addSeries(...);
chart.plot(data);

if (chart.getCTChart().getPlotArea().getLineChartArray(0).getSerArray(0).getTx() == null) 
 chart.getCTChart().getPlotArea().getLineChartArray(0).getSerArray(0).addNewTx();
data.getSeries().get(0).setTitle("Series 1 Title", null);

if (chart.getCTChart().getPlotArea().getLineChartArray(0).getSerArray(1).getTx() == null)
 chart.getCTChart().getPlotArea().getLineChartArray(0).getSerArray(1).addNewTx();
data.getSeries().get(1).setTitle("Series 2 Title", null);
...
//setting the axis Ids to the LineChart
chart.getCTChart().getPlotArea().getLineChartArray(0).addNewAxId().setVal(bottomAxis.getId());
chart.getCTChart().getPlotArea().getLineChartArray(0).addNewAxId().setVal(leftAxis.getId());
...
 类似资料:
  • 删除了仅使用的构造函数。在中,只需编写 但是,该构造函数在4.0中不再有效。文档位于https://poi.apache.org/apidocs/dev/org/apache/poi/xssf/usermodel/XSSFColor.html 显示了其他几个构造函数,但理想情况下我希望更改尽可能少的行。 所以,我的问题是,现在(在ApachePOI4.0中)从创建的最佳方法是什么? 根据注释中的要

  • 我知道有两种方法可以在Android中设置标题。 假设我已经有了下面的代码...

  • 我想将我当前活动的标题设置为图像相册的标题。我使用选项设置标题。不过,我最近遇到了,它设置活动名称并更改标题。 使用其中一个或另一个有什么区别吗? 谢谢你。

  • Since 8.0 setTitle 设置页面的标题栏,包括主标题,副标题以及标题菜单项 注意:由于苹果的ATS限制,image URL必须为https链接或base64,http链接会被忽略 使用方法 AlipayJSBridge.call('setTitle', { title: '标题', }); 代码演示 设置各种类型的标题栏 <h1>点击以下按钮看不同效果</h1> <a href

  • 我正在尝试创建二维双链接圆形阵列,从txt文件读取数据并自动创建节点。我的程序正在正确地读取第一行,但当它到达下一行并开始创建下一个节点时,会出现空指针。我不明白为什么会这样,请帮帮我。 这些都是错误。Null指针在尝试创建第二个节点时发生。它正确地创建第一个节点,而不是紧接着创建空指针。 第77行=位置next=n; 第69行=插入后(head.prev, x); 第18行=mList。镶片(k

  • 指针变量也是变量,是变量就可以任意赋值,不要越界即可(32位编译器指针大小为4字节,64位编译器指针大小为8字节),但是,任意数值赋值给指针变量没有意义,因为这样的指针就成了野指针,此指针指向的区域是未知(操作系统不允许操作此指针指向的内存区域)。所以,野指针不会直接引发错误,操作野指针指向的内存区域才会出问题。 int a = 100; int *p; p = a; //把a的值赋值给指针变量p