无法在java中读取使用SXSSFWorkbook编写的文件

时间:2017-02-23 16:16:07

标签: java apache-poi xlsx

我想读写大型excel文件。因此,我使用SXSSFWorkbook编写excel文件和XSSF和SAX EVENT API来读取文件。

但是,当读取excel文件时,单元格内容为空,并且如果使用SXSSFWOrkbook写入excel文件。如果我打开已写入的Excel文件并再次保存,则会正确显示内容。

以下是我用来编写excel文件的代码。

    SXSSFWorkbook wb = new SXSSFWorkbook();
    wb.setCompressTempFiles(true);

    SXSSFSheet sh = (SXSSFSheet) wb.createSheet();
    // sh.setRandomAccessWindowSize(100);// keep 100 rows in memory,
    // exceeding rows will be flushed to disk
    for (int rownum = 0; rownum < 100; rownum++) {
        Row row = sh.createRow(rownum);
        for (int cellnum = 0; cellnum < 10; cellnum++) {
            Cell cell = row.createCell(cellnum);
            String address = new CellReference(cell).formatAsString();
            cell.setCellValue(address);
        }

    }

    FileOutputStream out = new FileOutputStream("D:\\tempsxssf.xlsx");
    wb.write(out);
    out.flush();
    out.close();        
    wb.dispose();

我遇到了大麻烦,有人可以帮我解决问题吗?

1 个答案:

答案 0 :(得分:1)

我根据POI documentation

使用了另一个构造函数
SXSSFWorkbook(workbook, rowAccessWindowSize, compressTmpFiles, useSharedStringsTable)

像这样:

SXSSFWorkbook workbook = new SXSSFWorkbook(null, 1000, true, true);

您可以在其中启用共享字符串表