2016-12-18 38 views
0

我想用Apache POI添加工作表,但是當我嘗試保存excel時收到空指針異常。不確定爲什麼會發生這種情況,但數據更新爲excel發生完美。無法使用Apache POI ss用戶模型添加工作表

異常: org.apache.poi.POIXMLException:顯示java.lang.NullPointerException

public XL_ReadWrite(String path) throws Exception{ 
    this.path = path; 
    try{ 
     fin = new FileInputStream(path); 
     workbook = WorkbookFactory.create(fin); 
     sheet = workbook.getSheetAt(0); 
     fin.close(); 
    } catch(FileNotFoundException e){ 
     throw new Exception("Exception occurred while finding the file : " + path + " while XLS initialize .Exception details : "+e.getMessage()); 
    } catch(IOException e){ 
     throw new Exception("I/O interrupted exception occurred while XLS initialize .Exception details : " + e.getMessage()); 
    } catch(Exception e){ 
     throw new Exception("Exception occurred while XLS initialize .Exception details : "+ e.getMessage()); 
    } 
} 

public void addSheet(String sheetName) throws Exception{ 
     File file = new File(path); 
     String fileExtn = Globals.GC_EMPTY; 
     workbook = null; 
     if (file.exists()) { 
      try { 
       fileExtn = FilenameUtils.getExtension(file.getAbsolutePath()); 
       if(fileExtn.equals("xlsx")){ 
        workbook = (XSSFWorkbook) WorkbookFactory.create(file); 
       }else if(fileExtn.equals("xls")){ 
        workbook = (HSSFWorkbook) WorkbookFactory.create(file); 
       } 
       sheet = workbook.createSheet(sheetName); 
      }catch (InvalidFormatException e) { 
       throw new Exception("InvalidFormatException occurred while adding sheet : " + sheetName + ". Exception details : "+e.getMessage());  
      }catch(IOException e){ 
       throw new Exception("IOException occurred while adding sheet : " + sheetName + ". Exception details : "+e.getMessage()); 
      } 
     } 
     else{ 
      throw new FileNotFoundException("Error : " + path + " not found"); 
     } 
    } 

public void saveXL() throws Exception{  
     try{ 
      fout = new FileOutputStream(path); 
      this.workbook.write(this.fout); 
      this.fout.close(); 
     }catch(Exception e){ 
      throw new Exception("Exception occurred while saving excel. Exception details :" +e.getMessage()); 
     } 
    } 

回答

1

發行固定

if(fileExtn.equals("xlsx")){ 
        workbook = (XSSFWorkbook) WorkbookFactory.create(new FileInputStream(path)); 
       }else if(fileExtn.equals("xls")){ 
        workbook = (HSSFWorkbook) WorkbookFactory.create(new FileInputStream(path)); 
       } 
+0

爲什麼你認爲這是需要呢?爲什麼不使用WorkbookFactory並讓它自動檢測? – Gagravarr

相關問題