有關 poi 讀 excel 中的一些問題 :
讀取 excel 2003-2007 和 2007以後版本 兼容問題 解決
單元格日期格式讀取 處理方式
讀取 excel 2003-2007 和 2007以後版本 兼容問題 解決
目前操作方式如下:
try {
org.apache.poi.hssf.record.crypto.Biff8EncryptionKey
.setCurrentUserPassword(password);
inp = new FileInputStream(path); //這個地方必須new一個新的
否則出現exception 流就會被強制關閉
workbook = WorkbookFactory.create(inp);
}catch(Exception e){
inp = new FileInputStream(path);//這個地方必須new一個新的
否則出現exception 流就會被強制關閉
POIFSFileSystem pfs = new POIFSFileSystem(inp);
EncryptionInfo encInfo = new EncryptionInfo(pfs);
Decryptor decryptor = Decryptor.getInstance(encInfo);
decryptor.verifyPassword(password);
workbook = new XSSFWorkbook(decryptor.getDataStream(pfs));
}finally{
if(inp != null){
inp.close();
}
}
單元格日期格式讀取 處理方式 :
處理如下:
1 處理XSSFCell
if (DateUtil.isCellDateFormatted(cell)) { //Excel Date類型處理
Date date = DateUtil.getJavaDate(cell.getNumericCellValue());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
}else{
cell.setCellType(1);
return cell.getStringCellValue();
}
2 處理HSSFCell
if (HSSFDateUtil.isCellDateFormatted(cell)) { //Excel Date類型處理
Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
}else{
cell.setCellType(1);
return cell.getStringCellValue();
}
後續再做更新 以上爲本人實踐 如有不當之處 歡迎指正 歡迎交流!