写入后Excel文件损坏

我正在使用POI的3.10版本。 我遇到的问题是我正在创build一个xls,xlsx文件。 写入文件时看起来都不错。 大概是2MB。 当我在Excel中打开它截断文件到4K,我只得到我的列标题所有的数据都消失了。 如果我试图打开xlsx它说它是腐败的。 任何人都遇到了这个问题。

这是写入数据行的代码。

public void writeRow(int irow, String[] rdata) { Row row; Cell cell; int cellnum = 0; int rownum = irow; System.out.println("writeRow():ROW -> " + irow); row = _wSheet.getRow(irow); if (row == null) { System.out.println("writeRow():Creating Row " + irow); row = _wSheet.createRow(rownum); } for (String rdata1 : rdata) { cell = row.createCell(cellnum++); cell.setCellValue((String) rdata1); } write(); } public void write() { try { _gWorkbook.write(_outF); _outF.flush(); } catch (IOException wbe) { System.out.println("write(): Error writing workbook "+wbe.getMessage()); } } 

你似乎每行都写一次文件,这不是你想要做的。 当你完成的时候,你应该只在最后写出工作簿

所以,要修复它,请更改您的代码,以便只在代码的最后调用Workbook.write(OutputStream) 。 不要试图去做,文件格式不能这样工作