直接上干貨,首先pom文件引入依賴
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency>
接下來是java代碼
public void export(List<LiquidityNotchExportDetailDto> list, HttpServletResponse response) throws IOException{//文件名字String filename = "liquidityNotch_"+System.currentTimeMillis()+".xlsx";response.setHeader("Content-Disposition", "attachment; filename="+filename);// 響應類型,編碼response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");EasyExcel.write(response.getOutputStream()).head(LiquidityNotchExportEasyExcelUtils.head()).sheet("缺口").doWrite(LiquidityNotchExportEasyExcelUtils.contentData(list));}
head
是excel里的頭文件,doWrite
指定的是導出數據
頭文件LiquidityNotchExportEasyExcelUtils.head()
簡單點的是單層
public static List <List<String>> head( ){List<String> fixhead1 = Lists.newArrayList("產品簡稱", "產品簡稱");List<String> fixhead2 = Lists.newArrayList("產品代碼", "產品代碼");List<List<String>> headTitles = new LinkedList<>();headTitles.add(fixhead1);headTitles.add(fixhead2);return headTitles;}
這樣就能導出一行兩列數據
產品簡稱 | 產品代碼
如果你是復雜點的雙層表頭,比如這樣
那么這樣子寫
public static List <List<String>> head( ){List<String> fixhead1 = Lists.newArrayList("產品簡稱", "產品簡稱");List<String> fixhead2 = Lists.newArrayList("產品代碼", "產品代碼");List<List<String>> headTitles = new LinkedList<>();headTitles.add(fixhead1);headTitles.add(fixhead2);List<String> orderSpeaces = Lists.newArrayList("可變現資產", "到期負債");orderSpeaces.forEach(title->{headTitles.add( Lists.newArrayList( "第一日",title) );});}
以此類推等等
導出數據就沒啥好說了,很簡單的拼一下
public static List <List<String>> contentData(List<LiquidityNotchExportDetailDto> list){List<List<String>> contentList = Lists.newArrayList();for (LiquidityNotchExportDetailDto dto : list) {List<String> temp = Lists.newArrayList(dto.getPortName(), dto.getPortId());contentList.add(temp);}return contentList;}