我正在尝试使用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());
}
}
答案 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));
}