我有一个应用程序(Java)从外部源接收xlsx文件,使用XSSF读取它,然后根据某些条件吐出该文件的某些行,并将这些行写入通过SXSSF生成的新文件。生成的那些新文件也将通过应用程序发送以进行读取。我遇到的问题是XSSF解析器没有看到通过SXSSF生成的新电子表格的内容。如果我打开文件它看起来很好 - 数据就在那里,如果我只是保存它然后再次运行它,XSSF将读取它。我猜可能在写入文件时SXSSF没有设置某种类型的文件属性,这会阻止解析器读取电子表格?知道是什么导致了这个吗?
以下是代码:
private SXSSFWorkbook wb = new SXSSFWorkbook();
public void writeFile(String outputFile, ArrayList<List<? extends Object>> rows) throws IOException {
Sheet sh = wb.createSheet("Sheet1");
int numRows = rows.size();
for (int i = 0; i <= numRows; i++) {
Row row = sh.createRow(i);
for (int cellNum = 0; cellNum <= rows.get(i).size(); cellNum++) {
Cell cell = row.createCell(cellNum);
if (rows.get(i).get(cellNum) == null) {
cell.setCellValue("");
} else {
cell.setCellValue(rows.get(i).get(cellNum).toString());
}
}
}
FileOutputStream out = null;
try {
out = new FileOutputStream(outputFile);
wb.write(out);
wb.dispose();
} catch (IOException e) {
throw e;
} finally {
try {
out.close();
} catch (IOException e) {
throw e;
}
}
}