赞
踩
首先,需要在pom中添加依赖:
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>easyexcel</artifactId>
- <version>3.0.5</version>
- </dependency>
开始写入文件
- @Slf4j
- @RunWith(SpringRunner.class)
- @SpringBootTest(classes = TestProject.class)
- public class DemoTest {
-
- @Test
- public void test() {
- // 注意:模板需要存在
- String tempFileName = "D:\\Program Files\\IDEA Project\\excel\\easyexcel_test.xlsx";
- // 目标文件
- String fileName = "D:\\Program Files\\IDEA Project\\excel\\" + "测试-01" + ".xlsx";
- File directory = new File("D:\\Program Files\\IDEA Project\\excel\\");
- // 如果存放目标文件路径不存在,则创建文件夹
- if (!directory.exists()) {
- directory.mkdirs();
- }
- // 根据模板写入数据,如果目标文件不存在,则自动创建文件
- ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(tempFileName).build();
- // 在名为“练习”的工作簿中写入数据,如果模板中不存在练习工作簿,则会在目标文件中自动创建
- WriteSheet writeSheet = EasyExcel.writerSheet("练习").build();
- // 垂直写入数据,如果要水平写入,将VERTICAL替换为HORIZONTAL
- FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build();
- // 需要写入的Map数据,注意,如果有多个list,模板中必须有前缀,比如这里的data1与data2
- Map<String, List<Stu>> stuMap = new HashMap<>();
- // data1()与data2()为写入的数据list
- // 注意:写入的数据一定不要超过文件留有的位置,否则会发生覆盖的错误结果。
- // 比如,模板里面我给data1只留了一行,那么垂直写入时,data1的数据不能超过一行。
- stuMap.put("data1", data1(1));
- stuMap.forEach((k, v) -> excelWriter.fill(new FillWrapper(k, v), fillConfig, writeSheet));
- Map<String, List<App>> appMap = new HashMap<>();
- appMap.put("data2", data2(4));
- appMap.forEach((k, v) -> excelWriter.fill(new FillWrapper(k, v), fillConfig, writeSheet));
- // 结束写入
- excelWriter.finish();
- }
-
-
- @Data
- @Builder
- public static class Stu {
- private String name;
- private Double age;
- private String sex;
- }
-
- private List<Stu> data1(int i) {
- List<Stu> stus = new LinkedList<>();
- for (int k = 0; k < i; k++) {
- Stu stu = Stu.builder()
- .name("lucy")
- .age(k + 23.5)
- .sex("男")
- .build();
- stus.add(stu);
- }
- return stus;
- }
-
- private List<App> data2(int i) {
- List<App> apps = new LinkedList<>();
- for (int k = 0; k < i; k++) {
- App app = App.builder()
- .name("lu")
- .age(k + 23)
- .address("地址")
- .build();
- apps.add(app);
- }
- return apps;
- }
-
- @Data
- @Builder
- public static class App {
- private String name;
- private Integer age;
- private String address;
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
模板:easyexcel_test.xlsx
目标文件最后结果:测试-01.xlsx
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。