我正在使用3.10版本的POI。我遇到的问题是我正在创建一个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());
}
}
答案 0 :(得分:3)
您似乎每行写一次文件,这不是您想要做的。你应该只在最后完成时编写工作簿
因此,要修复它,请更改代码,以便只在代码的最后调用Workbook.write(OutputStream)。不要试着去做,文件格式不能像那样工作