我正在使用Java Apache poi库。我必须以块的形式在Excel文件中写入数据。我的应用程序范围是我无法一次性将整个数据写入我的Excel文件,因此修复了批量大小并批量写入数据(块)。我正在使用以下代码。
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("sheet");
int rowNum = startIndex;
Row excelRow = sheet.createRow(rowNum++);
int colNum = 1;
// Placing matrix results in rest of rows. Also keywrods in first column.
for(int rowIndex = 0; rowIndex < keywords.size(); rowIndex++) {
excelRow = sheet.createRow(rowNum++);
colNum = 0;
Cell cell = excelRow.createCell(colNum);
cell.setCellValue(keywords.get(rowIndex));
colNum++;
for(int colIndex = 0; colIndex < scoreResults[rowIndex].length; colIndex++) {
cell = excelRow.createCell(colNum);
cell.setCellValue(scoreResults[rowIndex][colIndex]);
colNum++;
}
}
FileOutputStream outputStream = new FileOutputStream(outputExcelFileName,true);
workbook.write(outputStream);
outputStream.close();
workbook.close();
这是在函数中编写的,我必须一次又一次地调用该函数。如果我的元素大小与我的批量大小相同,则没有问题。文件已成功创建和打开。当批量大小为10且我的元素为15时出现问题。然后第二次迭代没有成功发生。在运行时没有任何错误,但是当我打开excel文件时,MS(2010)报告此错误:
Excel found unreadable content in 'file_name'. Do you want to recover the contents of this workbook?
如果我点击“是”,那么它只恢复第一次迭代的内容。如果批量大小为10,则只能恢复10个元素。因此,第一次迭代后存在问题。
我花了很多时间搞清楚这个问题,但仍无法解决问题。如果有人可以提供帮助,我会感激你。