# ExcelUtil **Repository Path**: kagami1/ExcelUtil ## Basic Information - **Project Name**: ExcelUtil - **Description**: excel导出 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-05 - **Last Updated**: 2021-07-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ExcelUtil 根据excel模版导出相关报表 ### 主要功能 读取excel表头,复制文件后存入数据导出excel。 ```java ArrayList datas = new ArrayList(); TestBean bean = new TestBean(); for (int i = 0; i < 2; i++) { datas.add(bean); } String output = System.getProperty("user.dir") + "/src/test/resources/createtest.xlsx"; String input = System.getProperty("user.dir") + "/src/test/resources/test.xlsx"; CommonExcelClient client = new CommonExcelClient(input, output, datas); client.assembleDyna(1, 0);//从第1行,第0列开始插入数据 ``` test.xlsx 表头如下 姓名|年龄|现金|身份证 -|-|-|- 输出结果如下 姓名|年龄|现金|身份证 -|-|-|- Zhang|12|20|12 Zhang|12|20|12 ### 扩展功能 此项目基于apache.poi,本项目在sheet创建前,row创建前,cell创建前都加入了拦截器,方便自己增加功能。 内置拦截器有: ##### 增加行号 ``` String output = System.getProperty("user.dir") + "/src/test/resources/createtest.xlsx"; String input = System.getProperty("user.dir") + "/src/test/resources/test.xlsx"; CommonExcelClient client = new CommonExcelClient(input, output, datas); client.addIntercepter(new LineNumberIntercepter()); client.assembleDyna(1, 0); ``` test.xlsx 表头如下 行号|姓名|年龄|现金|身份证 -|-|-|-|- 输出结果如下 行号|姓名|年龄|现金|身份证 -|-|-|-|- 1|Zhang|12|20|12 2|Zhang|12|20|12 --- ##### 占位符替换 test.xlsx 表头如下 姓名|年龄|现金|身份证 -|-|-|- -|${age}| | ```java String output = System.getProperty("user.dir") + "/src/test/resources/createtest.xlsx"; String input = System.getProperty("user.dir") + "/src/test/resources/test.xlsx"; CommonExcelClient client = new CommonExcelClient(input, output, datas); PlaceholderIntercepter insertDataIntercepter = new PlaceholderIntercepter(); Map dataMap = new HashMap<>(); dataMap.put("age", 90 + ""); insertDataIntercepter.setDataMap(dataMap); client.addIntercepter(insertDataIntercepter); client.assembleDyna(1, 1); ``` 输出结果如下 姓名|年龄|现金|身份证 -|-|-|- Zhang|90|20|12 Zhang|12|20|12 ### 效率测试 项目采用反射获取bean数据 行数|bean字段数|秒数 -|-|- 5000|15|2.641 10000|15|4.263 20000|15|7.55 20000|10|5.818 20000|2|2.597