POI處理Excel中各種日期格式問題


前不久寫過一篇隨筆《EXCEL解析之終極方法WorkbookFactory》,提到使用WorkbookFactory來處理Excel文件數據,最近發現一個問題就是這個辦法不能很好的處理各種日期格式,比如下面這些:

那么如何將這些格式正確識別並輸出呢?下面來分享一下解決方法。

其實答案已經在之前已經寫過。需要回到之前比較笨重的那個辦法,就是在讀取單元格時對單元格中數據的種類做判斷,再將數據做適當轉換,POI將EXCEL數據分成以下幾種類型:

CELL_TYPE_NUMERIC

CELL_TYPE_STRING

CELL_TYPE_BOOLEAN

CELL_TYPE_FORMULA

CELL_TYPE_BLANK

CELL_TYPE_ERROR

本次隨筆內容主要討論的是日期格式問題,所以要注意的是, 當type是numberic的時候,又分為數字格式和日期格式。

數字格式->如果是double類型就要讀取double類型,如果是int則直接讀取。使用getNumericCellValue讀取數字類型。

日期格式->則需要使用POI提供的DataFormatter類的formatCellValue方法來讀取日期類型單元格。

完美解決各種日期格式問題,包括中文格式日期。

運行結果如下:

提示:在判斷單元格是否為日期時,由於是對XSSFcell和HSSFcell分開讀取,使用的是HSSFDataUtil類的isCellDateFormatted方法,XSSFDataUtil類沒有定義這個方法,進過分析POI jar包,發現它是繼承於

org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(Cell cell),於是直接使用絕對路徑來指定方法,調試可以成功。

總覺得在腳本中使用這種絕對路勁比較難看,很不雅觀,如果誰有更好的方法,歡迎分享,謝謝!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM