2017-02-23 65 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); 

在這裏您可以啓用共享字符串表