springboot+easyExcel快速上手指南
Contents
1 新建springboot工程


依赖里选择Web下的Spring Web,其它均保持默认即可。



2 引入easyExcel依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--引入easyExcel的依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3 创建实体类
实体类对象的数据,用于导出到Excel中去。
放在com.example.demo路径下,新建的dao包下。
package com.example.demo.dao;
/**
* @Author:asher
* @Date:2021/5/22 06:44
* @Description:com.example.demo.dao
* @Version:1.0
*/
public class User {
private int id;
private String name;
public User(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4 创建工具类
放在com.example.demo路径下,新建的util包下。
package com.example.demo.util;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.example.demo.dao.User;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
* @Author:asher
* @Date:2021/5/22 06:53
* @Description:com.example.demo.util
* @Version:1.0
*/
public class ExcelUtil {
public static void generateExcel(HttpServletResponse response, List<User> list) throws IOException {
// 创建ExcelWriter对象
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
// 创建工作簿
WriteSheet writeSheet = EasyExcel.writerSheet(0, "sheet1").head(User.class).build();
// 向Excel中写入数据
excelWriter.write(list, writeSheet);
// 关闭输出流
excelWriter.finish();
}
}5 创建控制器
放在com.example.demo路径下,新建的controller包下。
package com.example.demo.controller;
import com.example.demo.dao.User;
import com.example.demo.util.ExcelUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @Author:asher
* @Date:2021/5/22 06:46
* @Description:com.example.demo.controller
* @Version:1.0
*/
@Controller
public class UserController {
@RequestMapping("/test")
@ResponseBody
public void test(HttpServletResponse response) throws IOException {
List<User> userList = new ArrayList<>();
userList.add(new User(1, "小红"));
userList.add(new User(2, "花花"));
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=" + "test.xlsx");
ExcelUtil.generateExcel(response, userList);
}
}6 启动工程
启动DemoApplication:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Demo1Application {
public static void main(String[] args) {
SpringApplication.run(Demo1Application.class, args);
}
}7 在浏览器中访问,自动下载Excel文件
8 查看Excel文件内容
id name
1 小红
2 花花

9 小结
通过easyExcel,快速的上手,实现了一个Java生产Excel文件的样例项目。其中,关于easyExcel的核心类使用,需要再深入学习一下。以及,工具类中的关于泛型参数需要再改进,而不应该是将泛型参数直接写死到方法签名中。
