1. 程式人生 > >POI處理Excel中各種日期格式問題

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),於是直接使用絕對路徑來指定方法,除錯可以成功。

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

 

原地址:http://www.cnblogs.com/dogdogwang/p/6911288.html