Java ApachePOI4.0条形图示例不起作用
在尝试ApachePOI4.0的项目示例时,我遇到了创建条形图的问题,在运行代码后,我打开xlsx文件时出现了错误msgJava 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中不会添加任何图表,但数据正常。 然后我试着使用折线图和散点图的例子,面
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());
...