Java ApachePOI4.0条形图示例不起作用

Java ApachePOI4.0条形图示例不起作用,java,excel,charts,apache-poi,Java,Excel,Charts,Apache Poi,在尝试ApachePOI4.0的项目示例时,我遇到了创建条形图的问题,在运行代码后,我打开xlsx文件时出现了错误msg Excel在“xxx.xlsx”中发现不可读的内容。是否要恢复此工作簿的内容?如果您信任工作簿的来源,请单击“是”。 单击yes,然后获取另一条消息 Excel能够通过修复或删除不可读的内容来打开文件。 移除的零件:/xl/drawings/drawing1.xml零件(图纸形状)。 单击关闭,excel中不会添加任何图表,但数据正常。 然后我试着使用折线图和散点图的例子,面

在尝试ApachePOI4.0的项目示例时,我遇到了创建条形图的问题,在运行代码后,我打开xlsx文件时出现了错误msg
Excel在“xxx.xlsx”中发现不可读的内容。是否要恢复此工作簿的内容?如果您信任工作簿的来源,请单击“是”。

单击
yes
,然后获取另一条消息
Excel能够通过修复或删除不可读的内容来打开文件。
移除的零件:/xl/drawings/drawing1.xml零件(图纸形状)。

单击
关闭
,excel中不会添加任何图表,但数据正常。
然后我试着使用折线图和散点图的例子,面对同样的问题。
此错误最可能的原因是什么?如何修复此错误?
提前感谢。:)

package org.apache.poi.xssf.usermodel.examples;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.ss.util.CellRangeAddress;
导入org.apache.poi.xddf.usermodel.PresetColor;
导入org.apache.poi.xddf.usermodel.XDDFColor;
导入org.apache.poi.xddf.usermodel.XDDFShapeProperties;
导入org.apache.poi.xddf.usermodel.XDDFSolidFillProperties;
导入org.apache.poi.xddf.usermodel.chart.axiscrosss;
导入org.apache.poi.xddf.usermodel.chart.AxisPosition;
导入org.apache.poi.xddf.usermodel.chart.ChartTypes;
导入org.apache.poi.xddf.usermodel.chart.LegendPosition;
导入org.apache.poi.xddf.usermodel.chart.XDDFCategoryAxis;
导入org.apache.poi.xddf.usermodel.chart.XDDFChartData;
导入org.apache.poi.xddf.usermodel.chart.XDDFChartLegend;
导入org.apache.poi.xddf.usermodel.chart.XDDFDataSource;
导入org.apache.poi.xddf.usermodel.chart.XDDFDataSourcesFactory;
导入org.apache.poi.xddf.usermodel.chart.XDDFNumericalDataSource;
导入org.apache.poi.xddf.usermodel.chart.XDDFValueAxis;
导入org.apache.poi.xssf.usermodel.XSSFChart;
导入org.apache.poi.xssf.usermodel.XSSFClientAnchor;
导入org.apache.poi.xssf.usermodel.XSSFDrawing;
导入org.apache.poi.xssf.usermodel.xssfheet;
导入org.apache.poi.xssf.usermodel.xssf工作簿;
公共类柱状图{
公共静态void main(字符串[]args)引发IOException{
尝试(XSSFWorkbook wb=new XSSFWorkbook()){
XSSFSheet sheet=wb.createSheet(“条形图”);
行的最终整数=3;
_列的最终int NUM_=10;
//创建一行并在其中放置一些单元格。行基于0。
行行;
细胞;
for(int-rowIndex=0;rowIndex
新的
XDDF
代码缺少
barChart
中的
axIds
设置,以及条形图方向
barDir
的设置,可以是柱形图的COL,也可以是条形图的bar

/xl/charts/chart1.xml中,如下所示:

<c:barChart>
 <c:barDir val="bar"/>
 ...
 <c:axId val="0"/>
 <c:axId val="1"/>
</c:barChart>
它至少会起作用


轴设置也存在其他问题。这就是为什么我要说,条形图的创建还没有准备好,它只使用了
apachepoi
的高级类

也许从消除的过程开始。。。如果删除图表,是否仍会加载数据?可能与
折线图
散点图
的问题相同,请参阅?我现在不能自己测试。但是给出
chart.getCTChart().getPlotArea().getBarChartArray(0.addNewAxId().setVal(bottomAxis.getId());chart.getCTChart().getPlotArea().getBarChartArray(0.addNewAxId().setVal(leftAxis.getId())
a try.@PaulBastide如果只为(int rowIndex=0;rowIndexfor
,文件打开时没有错误消息,因此我想问题很可能来自与图表相关的代码。@AxelRichter谢谢,但在处理条形图时仍然显示相同的错误消息,但在折线图和散点图示例中,添加
<c:barChart>
 <c:barDir val="bar"/>
 ...
 <c:axId val="0"/>
 <c:axId val="1"/>
</c:barChart>
<c:barChart>
 <c:barDir val="col"/>
 ...
 <c:axId val="0"/>
 <c:axId val="1"/>
</c:barChart>
...
      chart.plot(data);

      chart.getCTChart().getPlotArea().getBarChartArray(0).addNewBarDir().setVal(
       //org.openxmlformats.schemas.drawingml.x2006.chart.STBarDir.COL);
       org.openxmlformats.schemas.drawingml.x2006.chart.STBarDir.BAR);
      chart.getCTChart().getPlotArea().getBarChartArray(0).addNewAxId().setVal(bottomAxis.getId());
      chart.getCTChart().getPlotArea().getBarChartArray(0).addNewAxId().setVal(leftAxis.getId());
...