【EsayExcel】EsayExcel生成自定义表头
生活随笔
收集整理的這篇文章主要介紹了
【EsayExcel】EsayExcel生成自定义表头
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.項目背景
項目中需要生成Excel報表,類似下圖,由于需要動態生成表頭,借此機會,整理EsayExcel使用流程
2.項目依賴
SpringBoot版本2.x
<!--HuTool工具類-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.13</version>
</dependency>
<!--EasyExcel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.4</version>
</dependency>
<!--POI相關依賴-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
3.代碼
動態表格構建思路,表頭可以認為是一個二維數組,按下面的列的數字去構建內存的數組,內層的數組元素的個數就是表頭列的合并單元格后的行數
List<List<Object>> 二維數組 List<Object> 內層數組
public static void main(String[] args) {
simpleWrite();
}
public static void simpleWrite() {
//Excel文件輸的出位置
String outPath = "D:\excel\test.xlsx";
try {
//創建ExcelWriter寫入對象
ExcelWriter excelWriter = EasyExcel.write(new FileOutputStream(outPath)).build();
//創建Sheet對象
WriteSheet sheet = new WriteSheet();
//設置第N個Sheet
sheet.setSheetNo(1);
//設置Sheet名稱
sheet.setSheetName("第一個Sheet");
//創建表格對象
WriteTable table = new WriteTable();
//設置第N個表格
table.setTableNo(1);
//創建表頭集合
List<List<String>> headList = new ArrayList<List<String>>();
//第N列的表頭
List<String> headTitle1 = new ArrayList<>();
List<String> headTitle2 = new ArrayList<>();
List<String> headTitle3 = new ArrayList<>();
List<String> headTitle4 = new ArrayList<>();
List<String> headTitle5 = new ArrayList<>();
List<String> headTitle6 = new ArrayList<>();
List<String> headTitle7 = new ArrayList<>();
List<String> headTitle8 = new ArrayList<>();
List<String> headTitle9 = new ArrayList<>();
List<String> headTitle10 = new ArrayList<>();
List<String> headTitle11 = new ArrayList<>();
List<String> headTitle12 = new ArrayList<>();
List<String> headTitle13 = new ArrayList<>();
List<String> headTitle14 = new ArrayList<>();
List<String> headTitle15 = new ArrayList<>();
List<String> headTitle16 = new ArrayList<>();
List<String> headTitle17 = new ArrayList<>();
List<String> headTitle18 = new ArrayList<>();
List<String> headTitle19 = new ArrayList<>();
List<String> headTitle20 = new ArrayList<>();
List<String> headTitle21 = new ArrayList<>();
List<String> headTitle22 = new ArrayList<>();
headTitle1.add("日期");
//Dau
headTitle2.add("Dau");
headTitle2.add("總");
//第三列
headTitle3.add("Dau");
headTitle3.add("新用戶");
headTitle3.add("Dau");
//第四列
headTitle4.add("Dau");
headTitle4.add("新用戶");
headTitle4.add("%");
//第五列
headTitle5.add("Dau");
headTitle5.add("游戲");
headTitle5.add("Dau");
//第六列
headTitle6.add("Dau");
headTitle6.add("游戲");
headTitle6.add("%");
//第七列
headTitle7.add("Dau");
headTitle7.add("加速");
headTitle7.add("Dau");
//第八列
headTitle8.add("Dau");
headTitle8.add("加速");
headTitle8.add("%");
//第九列
headTitle9.add("Dau");
headTitle9.add("語音");
headTitle9.add("Dau");
//第十列
headTitle10.add("Dau");
headTitle10.add("語音");
headTitle10.add("%");
//===============行為-加速==================
//第11列
headTitle11.add("行為");
headTitle11.add("加速");
headTitle11.add("<30分鐘");
headTitle11.add("新用戶");
//第12列
headTitle12.add("行為");
headTitle12.add("加速");
headTitle12.add("<30分鐘");
headTitle12.add("老用戶");
//第13列
headTitle13.add("行為");
headTitle13.add("加速");
headTitle13.add(">30分鐘");
headTitle13.add("新用戶");
//第14列
headTitle14.add("行為");
headTitle14.add("加速");
headTitle14.add(">30分鐘");
headTitle14.add("老用戶");
//===============行為-游戲==================
//第15列
headTitle15.add("行為");
headTitle15.add("游戲");
headTitle15.add("<30分鐘");
headTitle15.add("新用戶");
//第16列
headTitle16.add("行為");
headTitle16.add("游戲");
headTitle16.add("<30分鐘");
headTitle16.add("老用戶");
//第17列
headTitle17.add("行為");
headTitle17.add("游戲");
headTitle17.add(">30分鐘");
headTitle17.add("新用戶");
//第18列
headTitle18.add("行為");
headTitle18.add("游戲");
headTitle18.add(">30分鐘");
headTitle18.add("老用戶");
//===============行為-語音==================
//第19列
headTitle19.add("行為");
headTitle19.add("語音");
headTitle19.add("<30分鐘");
headTitle19.add("新用戶");
//第20列
headTitle20.add("行為");
headTitle20.add("語音");
headTitle20.add("<30分鐘");
headTitle20.add("老用戶");
//第21列
headTitle21.add("行為");
headTitle21.add("語音");
headTitle21.add(">30分鐘");
headTitle21.add("新用戶");
//第22列
headTitle22.add("行為");
headTitle22.add("語音");
headTitle22.add(">30分鐘");
headTitle22.add("老用戶");
headList.add(headTitle1);
headList.add(headTitle2);
headList.add(headTitle3);
headList.add(headTitle4);
headList.add(headTitle5);
headList.add(headTitle6);
headList.add(headTitle7);
headList.add(headTitle8);
headList.add(headTitle9);
headList.add(headTitle10);
headList.add(headTitle11);
headList.add(headTitle12);
headList.add(headTitle13);
headList.add(headTitle14);
headList.add(headTitle15);
headList.add(headTitle16);
headList.add(headTitle17);
headList.add(headTitle18);
headList.add(headTitle19);
headList.add(headTitle20);
headList.add(headTitle21);
headList.add(headTitle22);
table.setHead(headList);
List<List<Object>> list = new ArrayList<>();
excelWriter.write(list, sheet, table);
// 記得 釋放資源
excelWriter.finish();
System.out.println("ok");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
總結
以上是生活随笔為你收集整理的【EsayExcel】EsayExcel生成自定义表头的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CRM One Order search
- 下一篇: 513100交易规则