2017-02-23 63 views
1

我想读取和写入大型的excel文件。因此,我使用SXSSFWorkbook来编写excel文件和XSSF以及SAX EVENT API来读取文件。无法读取使用Java中的SXSSFWorkbook编写的文件

但是,读取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

我曾经根据另一个构造POI documentation

SXSSFWorkbook(workbook, rowAccessWindowSize, compressTmpFiles, useSharedStringsTable) 

像这样:

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

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