昨天做了乙個將excel中準備的資料轉化成對應的sql的功能。
其實核心就是用poi庫去讀取excel檔案就好了。
由於excel檔案不同於純文字的csv或其他檔案,其本身的資料物件(即乙個cell)是有型別的。
不能將所有的資料都當做string來處理,在讀取時首先要判斷當前cell的celltype。celltype共有集中型別:string、numeric、bool、date、formula等。
我這裡變只用到了string、numeric兩種,然後通過getstringcellvalue和getnumericcellvalue讀取對應的值。
但是如果我的乙個欄位的期望型別是string 型別。但是需要存放乙個數字,比如:8。
而這個8是通過getnumericcellvalue讀取的,而這個函式讀取的值是8.0。是不是有問題了呢?
如果我的字段期望型別是numeric那8 和 8.0其實是沒區別的。
但是如果是string的話8和8.0就完全不一樣了。
因此需要在字段期望型別是string的時候將讀取得到的值中的/\.0+$/替換掉才可以。
但,歸根到底,通過getnumericcellvalue函式得到的string值本身就無法區分"8.0"和"8"兩個值。因此這個問題暫時也沒辦法解決。
所幸的是,我們可以和使用者進行約束,string型別的字段最好不要構造"*.000"這樣的資料哈。
利用POI讀取Excel檔案
前幾天實現了利用poi建立excel檔案,今天分享一下如何利用poi讀取excel檔案。要讀取的檔案內容,以下截圖已給出 下面講讀取檔案內容的方法。先建立乙個讀取excel的工具類。操作excel 的功能類 public class excelreader catch ioexception e 獲...
poi讀取excel檔案的再次實踐
之間使用過poi相關api來讀取excel檔案,之前的讀取內容的策略在某些情況下不適用,因為合併的列可能位置多種多樣,如何能正確讀取到真正儲存的資料呢?今天問了同事乙個問題,然後他告訴我說有乙個很好的方法來解決問題讀取資料的問題,那就是獲取sheet中所有合併的單元格集合,然後再遍歷的時候,如果該單...
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...