用Apache SXSSF编写xlsx,无法用XSSF读取

时间:2014-07-24 13:52:41

标签: java excel

我有一个应用程序(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;
        }
    }
}

0 个答案:

没有答案