目录
1.pom配置
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.0.0</version>
</dependency>
2.创建实体类
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
@Data
public class User {
// 设置表头
@ExcelProperty(value = {"姓名"})
// 设置列宽
@ColumnWidth(12)
private String name;
@ExcelProperty(value = {"年龄"})
@ColumnWidth(8)
private String age;
}
3.创建工具类
import com.alibaba.excel.EasyExcel;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
@Component
public class ExcelDownloadUtil {
public static void download(HttpServletResponse response, List dlist, String fileName, String sheetName, Class<?> dto) throws IOException {
// 设置上下文类型
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
// 设置编码
response.setCharacterEncoding("utf-8");
// 防止中文乱码
fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream(),dto).sheet(sheetName).doWrite(dlist);
}
}
4.业务处理
// 将查询结果封装为 list
ArrayList<User> dlList = getDownloadList(queryList);
// 导出文件名
String fileName = "表格名称";
// sheet页名称
String sheetName = "sheet页名称";
// 调用工具类,response 为 HttpServletResponse response
ExcelDownloadUtil.download(response, dlList, fileName, sheetName, User.class);
5.postman测试
与正常的post请求没有什么区别,发送请求时,需要选择 Send and Download