當前位置:編程學習大全網 - 源碼下載 - EasyExcel 如何導出下圖這樣格式的數據?

EasyExcel 如何導出下圖這樣格式的數據?

壹、EasyExcel

EasyExcel是阿裏巴巴開源poi插件之壹,主要解決了poi框架使用復雜,sax解析模式不容易操作,數據量大起來容易OOM,解決了POI並發造成的報錯。

主要解決方式:通過解壓文件的方式加載,壹行壹行的加載,並且拋棄樣式字體等不重要的數據,降低內存的占用。

EasyExcel優勢

註解式自定義操作。

輸入輸出簡單,提供輸入輸出過程的接口

支持壹定程度的單元格合並等靈活化操作

二、常用註解

@ExcelProperty

指定當前字段對應excel中的哪壹列。可以根據名字或者Index去匹配。當然也可以不寫,默認第壹個字段就是index=0,以此類推。千萬註意,要麽全部不寫,要麽全部用index,要麽全部用名字去匹配。千萬別三個混著用,除非妳非常了解源代碼中三個混著用怎麽去排序的。如果您正在學習Spring Boot,推薦壹個連載多年還在繼續更新的免費教程:/spring-boot-learning-2x/

@ExcelIgnore

默認所有字段都會和excel去匹配,加了這個註解會忽略該字段

@DateTimeFormat

日期轉換,用String去接收excel日期格式的數據會調用這個註解。裏面的value參照java.text.SimpleDateFormat

@NumberFormat

數字轉換,用String去接收excel數字格式的數據會調用這個註解。裏面的value參照java.text.DecimalFormat

@ExcelIgnoreUnannotated

默認不加ExcelProperty 的註解的都會參與讀寫,加了不會參與

三、?com.alibaba easyexcel 2.1.4 javax.servlet javax.servlet-api 4.0.1 provided com.alibaba fastjson 1.2.47四、監聽?/** * EasyExcel 導入監聽 */public class ExcelListener extends AnalysisEventListener { //可以通過實例獲取該值 private List datas = new ArrayList(); @Override public void invoke(Object o, AnalysisContext analysisContext) { datas.add(o);//數據存儲到list,供批量處理,或後續自己業務邏輯處理。 doSomething(o);//根據自己業務做處理 } private void doSomething(Object object) { //1、入庫調用接口 } public List getDatas() { return datas; } public void setDatas(List datas) { this.datas = datas; } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { // datas.clear();//解析結束銷毀不用的資源 }}五、接口導入Exceltry { //獲取文件名 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 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,推薦壹個連載多年還在繼續更新的免費教程:/spring-cloud-learning/七、本地導入、本地導出List 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 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的基礎使用過程,歡迎點贊關註交流。

來源 | /p/4e6aa6342b33

更多好文

萬字長文帶妳學習ElasticSearch

  • 上一篇:TeX是個什麽樣的排版軟件?使用它的最好方法是什麽?
  • 下一篇:Taro3 + Vue3 + NutUi 校驗配置
  • copyright 2024編程學習大全網