poi讀取excel解析最常見的問題

2021-06-25 13:39:31 字數 1083 閱讀 4317

excel儲存日期、時間均以數值型別進行儲存,讀取時poi先判斷是是否是數值型別,再進行判斷轉化

1、數值格式(cell_type_numeric):

1.純數值格式:getnumericcellvalue() 直接獲取資料

2.日期格式處理yyyy-mm-dd, d/m/yyyy h:mm,hh:mm 等不含文字的日期格式

1).判斷是否是日期格式:hssfdateutil.iscelldateformatted(cell)

2).判斷是日期或者時間

cell.getcellstyle().getdataformat() == hssfdataformat.getbuiltinformat("h:mm")

or:cell.getcellstyle().getdataformat() == hssfdataformat.getbuiltinformat("yyyy-mm-dd")

3.自定義日期格式:處理yyyy年m月d日,h時mm分,yyyy年m月等含文字的日期格式

判斷cell.getcellstyle().getdataformat()值,解析數值格式

yyyy年m月d日----->31

m月d日---->58

h時mm分--->32

2、字元格式(cell_type_string):直接獲取內容

純數值格式

:getnumericcellvalue() 直接獲取資料都是double,即使excel單元格中存的是1,取出來的值也是1.0,這就造成了一些問題,如果資料庫欄位是int,那麼就會wrong data type,所以需要對數值型別處理。

小弟貼上**,望能幫您解決問題。

case hssfcell.cell_type_numeric:

else if (cell.getcellstyle().getdataformat() == 58||cell.getcellstyle().getdataformat()==31) else

break;

}

POI讀取Excel常見問題

最近在做乙個將excel匯入到報表中的功能,使用了poi來實現,發現poi使用有諸多不便之處,先記錄下來,以後可能考慮使用openxml。1.數值型別處理 通過poi取出的數值預設都是double,即使excel單元格中存的是1,取出來的值也是1.0,這就造成了一些問題,如果資料庫欄位是int,那麼...

poi讀取excel元素

忽略元資料末尾 回到原資料開始處 org.apache.poi poi3.11 beta2 org.apache.poi poi ooxml 3.11 其中poi ooxml是為讀取xlsx特意引入,切要和poi版本一致 inputstream is new fileinputstream e xs...

使用POI解析Excel

最近在寫專案,涉及到批量新增學生資訊,通過網上查了眾多資料,終於通過上傳乙個excel檔案的方式加以解決,現特此記錄下來,以備以後檢視。解析的核心 suppresswarnings static access public static listreadxls inputstream inputst...