无法使用Apache POI用户模型

时间:2016-12-18 16:06:35

标签: java excel selenium apache-poi automated-tests

我正在尝试使用Apache POI添加工作表,但是当我尝试保存excel时,我得到Null Pointer异常。不确定为什么会发生这种情况,但是对excel的数据更新发生了完美。

发生异常: 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 个答案:

答案 0 :(得分:1)

问题已修复

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