有關 poi 讀 excel 中的一些問題

有關 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();
}

後續再做更新 以上爲本人實踐 如有不當之處 歡迎指正 歡迎交流!

發佈了47 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章