official 有问题例子 LineChart和 ScatterChart适用于 Apache POI 4.0。它们编译并运行没有错误,但是创建的 Excel 文件无法打开,说明存在不可读的内容。 Excel 2010 和 2016 提供了从工作簿恢复数据的选项,单击"is"后,这 dialog出现。可能是什么问题?
最佳答案
新的 XDDF
代码缺少 lineChart
和 scatterChart
中的 axId
设置。
在 /xl/charts/chart1.xml
中看起来像这样:
<c:lineChart>
...
<c:axId val="0"/>
<c:axId val="1"/>
</c:lineChart>
折线图..
做添加:
...
XDDFChartData data = chart.createData(ChartTypes.LINE, bottomAxis, leftAxis);
data.addSeries(xs, ys1);
data.addSeries(xs, ys2);
chart.plot(data);
//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());
// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("ooxml-line-chart.xlsx")) {
wb.write(fileOut);
}
...
在 LineChart.java
中
和
...
XDDFChartData data = chart.createData(ChartTypes.SCATTER, bottomAxis, leftAxis);
data.addSeries(xs, ys1);
data.addSeries(xs, ys2);
chart.plot(data);
//setting the axis Ids to the ScatterChart
chart.getCTChart().getPlotArea().getScatterChartArray(0).addNewAxId().setVal(bottomAxis.getId());
chart.getCTChart().getPlotArea().getScatterChartArray(0).addNewAxId().setVal(leftAxis.getId());
// Write the output to a file
try (FileOutputStream fileOut = new FileOutputStream("ooxml-scatter-chart.xlsx")) {
wb.write(fileOut);
}
...
在 ScatterChart.java
中
它会起作用。
关于java - 使用 Apache POI 4.0 运行官方示例 LineChars 和 ScatterChart 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52263619/