Java中easypoi導(dǎo)入excel文件列名相同的處理方案
Easypoi是什么
Easypoi 功能如同名字easy,主打的功能就是容易,讓一個(gè)沒接觸過poi的人員,就可以方便的寫出Excel導(dǎo)出、Excel模板導(dǎo)出、Excel導(dǎo)入、Word模板導(dǎo)出,通過簡(jiǎn)單的注解和模板語言(熟悉的表達(dá)式fe語法),完成以前復(fù)雜的寫法
開源地址:https://gitee.com/lemur/easypoi
獨(dú)特的功能
基于注解的導(dǎo)入導(dǎo)出,修改注解就可以修改Excel 支持常用的樣式自定義 基于map可以靈活定義的表頭字段 支持一堆多的導(dǎo)出,導(dǎo)入 支持模板的導(dǎo)出,一些常見的標(biāo)簽,自定義標(biāo)簽 支持HTML/Excel轉(zhuǎn)換,如果模板還不能滿足用戶的變態(tài)需求,請(qǐng)用這個(gè)功能 支持word的導(dǎo)出,支持圖片,Excel更多特性與功能詳解:easypoi官網(wǎng)說明
官方demo官網(wǎng)實(shí)例工程:easypoi-test
導(dǎo)入
1. 指定模板導(dǎo)入
在導(dǎo)入指定Excel模板的過程中,可能會(huì)碰到列名重復(fù)的問題,當(dāng)我們使用Easypoi的注解方式進(jìn)行導(dǎo)入時(shí),會(huì)發(fā)現(xiàn)出現(xiàn)丟失數(shù)據(jù)的情況,原因是源碼在解析注解映射關(guān)系的時(shí)候,使用的map進(jìn)行存儲(chǔ),當(dāng)實(shí)體的注解存在相同名稱時(shí),key會(huì)被重新覆蓋,導(dǎo)致數(shù)據(jù)列丟失,如圖通過添加fixedIndex屬性得以解決:
需要注意的是:fixedIndex是從0開始
Excel文件如圖:
2. Map自由導(dǎo)入
ImportParams importParams = new ImportParams(); importParams.setTitleRows(3);//標(biāo)題行 importParams.setHeadRows(1);//表頭行 importParams.setStartSheetIndex(0);//開始的sheet下標(biāo) importParams.setKeyIndex(null);//設(shè)置讀取空值 File file = new File('/file/file.xlsx');//文件路徑 try { List<Map> list = ExcelImportUtil.importExcel(file, Map.class, importParams); } catch (Exception e) { e.printStackTrace(); }
存在的問題
導(dǎo)入相同列名依舊會(huì)有丟失數(shù)據(jù)的問題,原因key重復(fù),目前好像沒找到解決辦法 遍歷時(shí)默認(rèn)map的值為空則不返回,通過設(shè)置setKeyIndex(null)可以解決該問題 當(dāng)表頭存在多個(gè)的時(shí)候,遍歷的titlemap存在問題,詳見issues小結(jié)
總的來說,easypoi功能還是很強(qiáng)大,使用上也簡(jiǎn)單,主要是把數(shù)據(jù)結(jié)構(gòu)想清楚,之后的導(dǎo)入導(dǎo)出邏輯就很簡(jiǎn)單了,本文example 在GitHub上地址:easypoi-demo
到此這篇關(guān)于Java中easypoi導(dǎo)入excel文件列名相同的處理方案的文章就介紹到這了,更多相關(guān)Java 導(dǎo)入excel文件列名相同內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Word在線翻譯怎么使用?Word文檔英文翻譯成中文的方法2. 搜狗輸入法管理器怎么打開?搜狗輸入法管理器打開方法簡(jiǎn)述3. 網(wǎng)易云音樂怎么發(fā)布動(dòng)態(tài)?網(wǎng)易云音樂動(dòng)態(tài)發(fā)布技巧分享4. 釘釘清除聊天記錄還能找回嗎5. qq音樂怎么發(fā)布自己的音樂6. 點(diǎn)淘邀請(qǐng)新人可以賺多少錢 點(diǎn)淘邀請(qǐng)一個(gè)新人多少錢7. 商家怎么入駐餓了么星選?8. 百度貼吧怎么清空瀏覽歷史?9. QQ手機(jī)群文件如何轉(zhuǎn)永久10. 華為watch gt2支持微信嗎