2016-12-18 37 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

相关问题