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

问题描述 投票:1回答:1

我想读写大型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();

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

java apache-poi xlsx
1个回答
1
投票

我根据POI documentation使用了另一个构造函数

SXSSFWorkbook(workbook, rowAccessWindowSize, compressTmpFiles, useSharedStringsTable)

像这样:

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

您可以在哪里启用共享字符串表

© www.soinside.com 2019 - 2024. All rights reserved.