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...