为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Apache POI 4.0 运行官方示例 LineChars 和 ScatterChart

使用 Apache POI 4.0 运行官方示例 LineChars 和 ScatterChart

扬帆大鱼 2021-09-12 16:48:47
Apache POI 4.0的官方示例LineChart和ScatterChart存在问题。它们编译和运行没有错误,但无法打开创建的 Excel 文件,说明存在不可读的内容。Excel 2010 和 2016 提供了从工作簿恢复数据的选项,单击“是”后,将出现此对话框。可能是什么问题?
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

新XDDF代码缺少and 中的axIds设置。lineChartscatterChart


在/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


它会起作用。


查看完整回答
反对 回复 2021-09-12
  • 1 回答
  • 0 关注
  • 187 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信