java - 使用 Apache POI 4.0 运行官方示例 LineChars 和 ScatterChart 时出现问题

标签 java excel charts apache-poi

official 有问题例子 LineChartScatterChart适用于 Apache POI 4.0。它们编译并运行没有错误,但是创建的 Excel 文件无法打开,说明存在不可读的内容。 Excel 2010 和 2016 提供了从工作簿恢复数据的选项,单击"is"后,这 dialog出现。可能是什么问题?

最佳答案

新的 XDDF 代码缺少 lineChartscatterChart 中的 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/

相关文章:

java - netty的addLast中,哪个EventExecutorGroup是对的

java - jpa中的范围查询

Activity 中的 Android PIE 图表

charts - 谷歌图表 : How do I sort by category filter with chronological order (by month)?

java - 从第 5 版开始, 'enum' 是关键字,不能用作标识符

vba - 根据单元格值删除行

python - 如何使用 openpyxl python 在 Excel 中插入复选框?

c++ - 如何从 XLL UDF 返回数组

jquery - 删除 X 轴上的线条和代码

java - Android-java 与 PC-Java