Java批量導入EXCEL數(shù)據(jù)

Java批量導入EXCEL數(shù)據(jù)
有些時候項目只是需要批量導入數(shù)據(jù)窘疮,這個時候就得使用程序遍歷導入慌烧。因為這個只是一個類似于工具類,所以沒必要整合到SpringBoot項目里面膏燕。類似這個demo一樣的工具程序我們可以寫在src下的test目錄下炭庙。

首先是獲取excel內容,遍歷excel以及獲取單元格對象用POI的apache提供的專門處理office的工具類

這里說一下excel的格式煌寇,.xls用HSSWorkBook接收輸入流焕蹄,如果是.xlsx就用XSSWorkBook接收輸入流,想兩者兼容可以加一個檢驗阀溶,或文件名再檢驗是否包含.xls還是.xlsx

還有一點要注意的是腻脏,單元格如果是數(shù)字鸦泳,獲取單元格內容的方法getValue會進行精度處理。例如100會變成100.0永品,如果你不想它轉化可以在轉化成字符串的時候再截取一下做鹰。

下面附上代碼:public List<Map<String,Object>> importShouldPayBill(MultipartFile upLoadFile)throws Exception{
String fileName=upLoadFile.getOriginalFilename();
String format=fileName.substring(fileName.lastIndexOf("."));
InputStream inputStream = upLoadFile.getInputStream();
Sheet sheet=null;
if(format.equals(".xls")){
HSSFWorkbook hwb=new HSSFWorkbook(inputStream);
sheet=hwb.getSheetAt(0);
}else if(format.equals(".xlsx")){
XSSFWorkbook hwb=new XSSFWorkbook(inputStream);
sheet=hwb.getSheetAt(0);
}
if(sheet==null){
throw buileSmartExceptionFactory.getInstance(ManagesystemErrorMsg.FILE_NOT_CONTENT);
}
List<Map<String,Object>>list=new ArrayList<>();
List<String>headList=new ArrayList<>();
for(int rowNumb=0;rowNumb<=sheet.getLastRowNum();rowNumb++){
Row hssfRow=sheet.getRow(rowNumb);
if(hssfRow==null){
continue;
}
Map<String,Object>map=new LinkedHashMap<>();
for (int cellNum=0;cellNum<=hssfRow.getLastCellNum();cellNum++){
Cell hssfCell=hssfRow.getCell(cellNum);
if(hssfCell==null||"".equals(String.valueOf(hssfCell))){
continue;
}
if(rowNumb==0){
headList.add(String.valueOf(getValue(hssfCell)));
//校驗表頭格式
}else{
map.put(headList.get(cellNum),getValue(hssfCell));
}
}
if(!"樓棟".equals(headList.get(0))||!"房屋".equals(headList.get(1))){
throw buileSmartExceptionFactory.getInstance(ManagesystemErrorMsg.FILE_FAIL_FORMAT);
}
list.add(map);
}
inputStream.close();
list.remove(0);
return list;
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鼎姐,隨后出現(xiàn)的幾起案子钾麸,更是在濱河造成了極大的恐慌,老刑警劉巖炕桨,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饭尝,死亡現(xiàn)場離奇詭異,居然都是意外死亡献宫,警方通過查閱死者的電腦和手機钥平,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姊途,“玉大人涉瘾,你說我怎么就攤上這事〗堇迹” “怎么了立叛?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贡茅。 經常有香客問我秘蛇,道長,這世上最難降的妖魔是什么友扰? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任彤叉,我火速辦了婚禮庶柿,結果婚禮上村怪,老公的妹妹穿的比我還像新娘。我一直安慰自己浮庐,他們只是感情好落竹,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布袜匿。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恶阴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天助泽,我揣著相機與錄音熬北,去河邊找鬼。 笑死璧坟,一個胖子當著我的面吹牛既穆,可吹牛的內容都是我干的赎懦。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼幻工,長吁一口氣:“原來是場噩夢啊……” “哼励两!你這毒婦竟也來了?” 一聲冷哼從身側響起囊颅,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤当悔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后踢代,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盲憎,經...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年奸鬓,在試婚紗的時候發(fā)現(xiàn)自己被綠了焙畔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡串远,死狀恐怖宏多,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情澡罚,我是刑警寧澤伸但,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站留搔,受9級特大地震影響更胖,放射性物質發(fā)生泄漏。R本人自食惡果不足惜隔显,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一却妨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧括眠,春花似錦彪标、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至当船,卻和暖如春题画,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背德频。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工苍息, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓竞思,卻偏偏與公主長得像桌粉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子衙四,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內容

  • C++ list的基本操作和使用 Lists將元素按順序儲存在鏈表中. 與 向量(vectors)相比, 它允許快...
    金色888閱讀 198評論 0 0
  • C++中引用(&)的用法和應用實例 對于習慣使用C進行開發(fā)的朋友們铃肯,在看到c++中出現(xiàn)的&符號,可能會犯迷糊传蹈,因為...
    金色888閱讀 167評論 0 0
  • public static void main(String[] args) { Map map1 =new Ha...
    夢想_15eb閱讀 410評論 0 0
  • 嵌入式系統(tǒng)STM32F4開發(fā)實驗 #以購買STM32F4時附贈的資料為基礎 ———————————————————...
    杯莫停_9554閱讀 414評論 0 0
  • 第一次在簡書留下文字押逼,瞬間有種當作家的錯覺,哈哈哈哈…… 話說跟長投相遇是在一個非常抑郁的日子惦界,看到一篇文章挑格,關于...
    伍佩閱讀 264評論 0 11