Spring Boot + EasyExcel 導入導出,好用到爆,可以扔掉 POI 了!
來源:https://www.jianshu.com/p/4e6aa6342b33
一、EasyExcel
EasyExcel是阿里巴巴開源poi插件之一,主要解決了poi框架使用復雜,sax解析模式不容易操作,數(shù)據(jù)量大起來容易OOM,解決了POI并發(fā)造成的報錯。
主要解決方式:通過解壓文件的方式加載,一行一行的加載,并且拋棄樣式字體等不重要的數(shù)據(jù),降低內(nèi)存的占用。
二、常用注解
Spring Boot 基礎就不介紹了,推薦下這個實戰(zhàn)教程:
https://www.javastack.cn/categories/Spring-Boot/
三、依賴
?
???com.alibaba
???easyexcel
???2.1.4
????
???javax.servlet
???javax.servlet-api
???4.0.1
???provided
???com.alibaba
???fastjson
???1.2.47
四、監(jiān)聽
?/**
?*?EasyExcel?導入監(jiān)聽
?*/
public?class?ExcelListener?extends?AnalysisEventListener?{
????//可以通過實例獲取該值
????private?List五、接口導入Excel
try?{
????????//獲取文件名
????????String?filename?=?file.getOriginalFilename();
????????//獲取文件流
????????InputStream?inputStream?=?file.getInputStream();
????????//實例化實現(xiàn)了AnalysisEventListener接口的類
????????ExcelListener?listener?=?new?ExcelListener();
????????//傳入?yún)?shù)
????????ExcelReader?excelReader?=?new?ExcelReader(inputStream,?ExcelTypeEnum.XLS,?null,?listener);
????????//讀取信息
????????excelReader.read(new?Sheet(1,?0,?Test.class));
????????//獲取數(shù)據(jù)
????????List?list?=?listener.getDatas();
????????if?(list.size()?>?1)?{
????????????for?(int?i?=?0;?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)?{
}
七、本地導入、本地導出
List?testList?=?new?ArrayList<>();
try?{
????String?strUrl?=?"C:\\Users\\Administrator\\Desktop\\json.xlsx";
????File?multipartFile?=?new?File(strUrl);
????InputStream?inputStream?=?new?FileInputStream(multipartFile);
????//實例化實現(xiàn)了AnalysisEventListener接口的類
????ExcelListener?listener?=?new?ExcelListener();
????//傳入?yún)?shù)
????ExcelReader?excelReader?=?new?ExcelReader(inputStream,?ExcelTypeEnum.XLS,?null,?listener);
????//讀取信息
????excelReader.read(new?Sheet(1,?0,?Test.class));
????//獲取數(shù)據(jù)
????List?list?=?listener.getDatas();
????if?(list.size()?>?1)?{
????????for?(int?i?=?0;?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的基礎使用過程,歡迎點贊關注交流。
最近熬夜給大家準備了非常全的一套Java一線大廠面試題。全面覆蓋BATJ等一線互聯(lián)網(wǎng)公司的面試題及解答,由BAT一線互聯(lián)網(wǎng)公司大牛帶你深度剖析面試題背后的原理,不僅授你以魚,更授你以漁,為你面試掃除一切障礙。
資源,怎么領取?
掃二維碼,加我微信,備注:面試題
一定要備注:面試題,不要急哦,工作忙完后就會通過!
評論
圖片
表情

