sponsored links

Spring Boot + EasyExcel 匯入匯出,好用到爆,可以扔掉 POI 了

Spring Boot + EasyExcel 匯入匯出,好用到爆,可以扔掉 POI 了

一、EasyExcel

EasyExcel是阿里巴巴開源poi外掛之一,主要解決了poi框架使用複雜,sax解析模式不容易操作,資料量大起來容易OOM,解決了POI併發造成的報錯。

主要解決方式:透過解壓檔案的方式載入,一行一行的載入,並且拋棄樣式字型等不重要的資料,降低記憶體的佔用。

EasyExcel優勢

  • 註解式自定義操作。
  • 輸入輸出簡單,提供輸入輸出過程的介面
  • 支援一定程度的單元格合併等靈活化操作

二、常用註解

@ExcelProperty

指定當前欄位對應excel中的那一列。可以根據名字或者Index去匹配。當然也可以不寫,預設第一個欄位就是index=0,以此類推。千萬注意,要麼全部不寫,要麼全部用index,要麼全部用名字去匹配。千萬別三個混著用,除非你非常瞭解原始碼中三個混著用怎麼去排序的。如果您正在學習Spring Boot,推薦一個連載多年還在繼續更新的免費教程:http://blog.didispace.com/spring-boot-learning-2x/

@ExcelIgnore

預設所有欄位都會和excel去匹配,加了這個註解會忽略該欄位

@DateTimeFormat

日期轉換,用String去接收excel日期格式的資料會呼叫這個註解。裡面的value參照java.text.SimpleDateFormat

@NumberFormat

數字轉換,用String去接收excel數字格式的資料會呼叫這個註解。裡面的value參照java.text.DecimalFormat

@ExcelIgnoreUnannotated

預設不加ExcelProperty 的註解的都會參與讀寫,加了不會參與

三、依賴

 <!-- easyexcel 主要依賴  這一個基本上就夠了-->
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>easyexcel</artifactId>
   <version>2.1.4</version>
</dependency>
<!-- servlet-api -->
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>4.0.1</version>
   <scope>provided</scope>
</dependency>
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.47</version>
</dependency>

四、監聽

 /**
 * EasyExcel 匯入監聽
 */
public class ExcelListener extends AnalysisEventListener {
    //可以透過例項獲取該值
    private List<Object> datas = new ArrayList<Object>();

    @Override
    public void invoke(Object o, AnalysisContext analysisContext) {
        datas.add(o);//資料儲存到list,供批次處理,或後續自己業務邏輯處理。
        doSomething(o);//根據自己業務做處理
    }

    private void doSomething(Object object) {
        //1、入庫呼叫介面
    }

    public List<Object> getDatas() {
        return datas;
    }

    public void setDatas(List<Object> datas) {
        this.datas = datas;
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        // datas.clear();//解析結束銷燬不用的資源
    }
}

五、介面匯入Excel

try {
        //獲取檔名
        String filename = file.getOriginalFilename();
        //獲取檔案流
        InputStream inputStream = file.getInputStream();
        //例項化實現了AnalysisEventListener介面的類
        ExcelListener listener = new ExcelListener();
        //傳入引數
        ExcelReader excelReader = new ExcelReader(inputStream, ExcelTypeEnum.XLS, null, listener);
        //讀取資訊
        excelReader.read(new Sheet(1, 0, Test.class));
        //獲取資料
        List<Object> list = listener.getDatas();
        if (list.size() > 1) {
            for (int i = 0; i < list.size(); i++) {
                Testobj = (Test) list.get(i);
                JSONObject jo = new JSONObject();
            }
        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

六、介面匯出Excel

HttpServletResponse response, HttpServletRequest request

 try {
    String filenames = "111111";
    String userAgent = request.getHeader("User-Agent");
    if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
        filenames = URLEncoder.encode(filenames, "UTF-8");
    } else {
        filenames = new String(filenames.getBytes("UTF-8"), "ISO-8859-1");
    }
    response.setContentType("application/vnd.ms-exce");
    response.setCharacterEncoding("utf-8");
    response.addHeader("Content-Disposition", "filename=" + filenames + ".xlsx");
    EasyExcel.write(response.getOutputStream(), Test.class).sheet("sheet").doWrite(testList);
} catch (Exception e) {
}

另外,如果您正在學習Spring Cloud,推薦一個連載多年還在繼續更新的免費教程:https://blog.didispace.com/spring-cloud-learning/

七、本地匯入、本地匯出

List<Test> testList = new ArrayList<>();
try {
    String strUrl = "C:\\Users\\Administrator\\Desktop\\json.xlsx";
    File multipartFile = new File(strUrl);
    InputStream inputStream = new FileInputStream(multipartFile);
    //例項化實現了AnalysisEventListener介面的類
    ExcelListener listener = new ExcelListener();
    //傳入引數
    ExcelReader excelReader = new ExcelReader(inputStream, ExcelTypeEnum.XLS, null, listener);
    //讀取資訊
    excelReader.read(new Sheet(1, 0, Test.class));
    //獲取資料
    List<Object> list = listener.getDatas();
    if (list.size() > 1) {
        for (int i = 0; i < list.size(); i++) {
            Testobj = (Test) list.get(i);
        }
    }
} catch (Exception e) {
    System.out.println(e.getMessage());
}
try {
    String strUrl = "C:\\Users\\Administrator\\Desktop\\json"+System.currentTimeMillis()+".xlsx";
    EasyExcel.write(strUrl,Test.class).sheet("sheet").doWrite(testList);
} catch (Exception e) {
}

以上就是EasyExcel的基礎使用過程,歡迎點贊關注交流。

來源 | https://www.jianshu.com/p/4e6aa6342b33

更多好文

萬字長文帶你學習ElasticSearch

分類: 時尚
時間: 2021-12-14

相關文章

蔡明越老越漂亮,穿綠色襯衫配連衣裙好洋氣,不輸同框李思思

蔡明越老越漂亮,穿綠色襯衫配連衣裙好洋氣,不輸同框李思思
蔡明是很多人心中的小品女王,很少有人會將她跟時尚人士聯絡到一起,雖然現在蔡明已經很少參與小品製作了,但是偶爾出現在鏡頭前讓人十分驚豔,似乎不知道從什麼時候開始,大齡的蔡明開始變成同齡女性中的穿搭翻版了 ...

“梅豔芳”扮演者王丹妮,穿褲子有復古範,氣場看著真大氣

“梅豔芳”扮演者王丹妮,穿褲子有復古範,氣場看著真大氣
褲子在任何的時候,都是很受歡迎的,也是每個人都有的服裝款式,但真正將褲子搭配出時尚感的人卻很少,這是因為越簡單的服裝,搭配的難度越高. 所以關於褲子的穿搭技巧一直都是大家經常討論的,而小編為大家整理了 ...

許晴在機場狂凹造型,穿“陰陽毛衣”配牛仔褲,50歲年齡20歲狀態

許晴在機場狂凹造型,穿“陰陽毛衣”配牛仔褲,50歲年齡20歲狀態
說到秋冬季衣櫃中必備前衛單品,毛衣必然值得領有姓名,超高的禦寒機能,讓它勝利出圈,但當今的女性早已不知足它自己的機能,反而更眷注它是否能博得公共的眷注.許晴即日在機場就穿了一件"陰陽毛衣&q ...

真正會穿的女人,秋天穿褲子都離不開這3個顏色,美得優雅有氣質

真正會穿的女人,秋天穿褲子都離不開這3個顏色,美得優雅有氣質
天氣漸涼,秋天帶著微微的寒意準備入侵,會穿的小仙女們的衣櫥已經準備好了秋日的必備褲裝,輕鬆hold住外出遊賞.姐妹聚會等各種活動.褲子好不好看,首先看顏色,好看的褲子顏色不僅能為造型加分,而且能大幅提 ...

39歲車曉氣質不俗,穿深灰色抹胸裙配利落盤發,一點不顯老氣

39歲車曉氣質不俗,穿深灰色抹胸裙配利落盤發,一點不顯老氣
氣質與談吐,展現的是一個人的內在修養.越是飽讀詩書的人,氣質越是內斂高貴.那種不爭不搶的氣質,不露與表的雅緻,會給人一種心曠神怡的美好,相處起來也覺得特別的舒服,不會給人一種距離感. 與自身的氣質的修 ...

99年的韓安冉又結婚了,才22歲就已經二婚,與老公穿情侶裝真配

99年的韓安冉又結婚了,才22歲就已經二婚,與老公穿情侶裝真配
哈嘍,大家好,我是biu時尚,很高興又和大家分享明星時尚與搭配技巧!希望我的文章讓你對時尚更加的感興趣,讓本身就好看的你,更加的有魅力! 很多女孩子在選擇時尚風格與搭配的時候,都喜歡用上一些比較減齡的 ...

秋天穿褲子,搭配什麼“鞋子”才好看?2種褲型、3大風格,快借鑑

秋天穿褲子,搭配什麼“鞋子”才好看?2種褲型、3大風格,快借鑑
文:洛薇 Hi,我是洛薇,繼續我們的時尚穿搭之旅,變美永遠不迷路.▼ 秋天穿褲子,搭配什麼鞋子才好看?今天,它是主角. 穿衣好不好看,60%取決於鞋子與包包的配合.不對,也許這個比例可以提高到80%. ...

霍汶希真的美出圈,穿綠夾克配牛仔褲走機場,顏值氣質媲美大明星

霍汶希真的美出圈,穿綠夾克配牛仔褲走機場,顏值氣質媲美大明星
霍汶希的名字大家都非常熟悉,作為娛樂圈的金牌推手,很多一線大牌藝人都是她一手捧紅的,她除了有著精明的頭腦之外,也有著不輸女明星的顏值和衣品,穿綠色夾克衫搭配牛仔褲,一身休閒裝穿出時髦感. 霍汶希的造型 ...

張柏芝美到“骨子裡”,穿玫紅色上衣配闊腿褲,顏值氣質無敵了

張柏芝美到“骨子裡”,穿玫紅色上衣配闊腿褲,顏值氣質無敵了
香港娛樂圈盛產美女,說到港圈的美女,張柏芝一定榜上有名,她出道非常早,一直到現在依舊活躍在娛樂圈,可以說是從年輕的時候一直美到現在,她的長相被稱為360度無死角的神顏.顏值上的優勢讓她在駕馭玫紅色的時 ...

40歲的陳喬恩越來越美了,穿黃色大衣配牛仔褲,像20歲少女一般

40歲的陳喬恩越來越美了,穿黃色大衣配牛仔褲,像20歲少女一般
俗語說"愛情能令人變美",這句話在陳喬恩的身上獲得了充裕的表現.40歲的她自從在節目中和艾倫官宣以後,全部人的狀況都不同樣了,不僅越加的甜蜜愛笑了,衣品也愈發的芳華少女了.在很近的 ...

郭碧婷終於不走“貴婦風”,穿大碼衛衣配闊腿褲,像鄰家小姑娘

郭碧婷終於不走“貴婦風”,穿大碼衛衣配闊腿褲,像鄰家小姑娘
說到郭碧婷相信大家都不陌生,她從拍攝口香糖廣告開始逐漸在娛樂圈開啟知名度,後期因為郭敬明的小時代系列在娛樂圈站穩腳跟,上綜藝的時候更是順便解決了自己的終身大事,與豪門公子向佐修成正果,嫁入豪門之前的郭 ...

梅根有多不拘小節?冬天穿毛衣汗打溼腋下,和英女王出訪蹺二郎腿

梅根有多不拘小節?冬天穿毛衣汗打溼腋下,和英女王出訪蹺二郎腿
梅根可能是英國王室有史以來最不拘小節的王妃了,和英女王出訪當眾蹺二郎腿.過生日時襯衣釦子都沒繫好.冬天穿毛衣腋下汗漬明顯--和時時刻刻端莊優雅的嫂子凱特王妃形成了鮮明對比,梅根的這種"風頭& ...

孫儷這回打扮真高調,穿1000針織衫配金耳環,輕鬆打造高階感

孫儷這回打扮真高調,穿1000針織衫配金耳環,輕鬆打造高階感
孫儷是很多人都非常喜歡的女明星,她的演技非常好,在很多經典的影視劇中都有著非常精彩的表現,在演戲這件事上她的實力非常高調,但是在穿搭這件事上,她的搭配風格通常非常簡單低調,不過這次小姐姐終於大膽了一次 ...

謝霆鋒媽媽挺趕時髦的,穿白上衣配小粉裙,70歲看著像40歲出頭

謝霆鋒媽媽挺趕時髦的,穿白上衣配小粉裙,70歲看著像40歲出頭
女性對裙裝天生有一種莫名的喜愛.女人無論多大年紀,都會被裙裝所吸引,但有些上了年紀的女人,即使喜歡裙裝也不會去選擇裙裝,因為在她們看來,裙裝已經不適合她們的年齡,穿出去會被人"笑話" ...

林峰老婆張馨月很有“超模範”,穿藍襯衫配短褲街拍,高階又洋氣

林峰老婆張馨月很有“超模範”,穿藍襯衫配短褲街拍,高階又洋氣
襯衫絕對是各個季節都實用性非常高的單品,不管是單獨穿搭還是作為內搭來講都絲毫沒有問題,大家在穿襯衫的時候是不是都是以簡單的白襯衫居多呢?其實換一種顏色可以穿出完全不一樣的效果,林峰老婆張馨月穿藍色襯衫 ...

1米65的“秦嵐”太會穿,黑色皮衣配開叉格紋裙,洋氣得像少女

1米65的“秦嵐”太會穿,黑色皮衣配開叉格紋裙,洋氣得像少女
入秋之後很多女生都為穿搭這件事所困擾,換季的時候最不知道穿什麼合適,今年秋天不知道怎麼穿的話不妨借鑑一下秦嵐的搭配方式吧,帥酷有型的黑色皮衣搭配上開叉款式的格紋半身裙,既洋氣又能夠秀出美腿的線條,整身 ...

日本女兵穿軍裝為何配裙子?不僅是為了省物資,還有另一個原因

日本女兵穿軍裝為何配裙子?不僅是為了省物資,還有另一個原因
二戰時 各國都會 派一些女性上戰場 其中日本女兵 總是以禮服的形象出現 在槍林彈雨的戰爭中 為什麼日本女兵 要穿極其不方便的禮服呢 接下來一起看一看 這其中不為人知的秘密 第二次世界大戰 是人類歷史上 ...

宋祖英氣質真沒得說,穿“蚊帳裙”配小綠裙都好看,優雅又迷人

宋祖英氣質真沒得說,穿“蚊帳裙”配小綠裙都好看,優雅又迷人
很多成熟女性在穿搭的時候上都非常喜歡一些微微透視的面料,這種透視感可以呈現出一種若隱若現的搭配效果,將成熟女性身上的女人味呈現出來,但是用得不好的話就會起到適得其反的穿搭效果,宋祖英久違亮相,穿蚊帳裙 ...

苗苗真的越看越“大氣”,穿T恤配印花褲也高階,這氣質太養眼了

苗苗真的越看越“大氣”,穿T恤配印花褲也高階,這氣質太養眼了
很多女生屬於長得非常耐看的型別,她們給人第一眼的印象不會非常驚豔,但是卻越看越養眼,越看越顯高階,鄭愷老婆苗苗就屬於典型的耐看型的女生,在穿搭的時候,簡單的T恤搭配上印花長褲就顯得非常高階,搭配一款漁 ...

何潔終於時尚起來,穿藍色短外套配黑色瘦腿褲,清爽時髦很顯瘦

何潔終於時尚起來,穿藍色短外套配黑色瘦腿褲,清爽時髦很顯瘦
初秋的季節,隨著一場秋雨的到來,愈發得清冷.走在街上的人群,也都換上了厚實的衣服.有人披上颯酷的風衣,有人穿上利落的西裝,也有人換上慵懶的毛衣,或者活力十足的衛衣. 不管是哪一種搭配,都有著自己的風采 ...