Spring Boot+EasyExcel实现Excel文件

张开发
2026/6/8 5:57:48 15 分钟阅读
Spring Boot+EasyExcel实现Excel文件
问题最近遇到一个问题Excel文件下载本来是很简单的结果下载后一直提示下面的信息搞了两天查了好多资料都没解决最后发现是参数问题是参数问题有问题版本引用pom文件引用对应jar包dependency groupIdcom.alibaba/groupId artifactIdeasyexcel/artifactId version3.1.1/version /dependency实现代码GetMapping(/EasyExcel) public void EasyExcel(Valid RequestBody TestTaskInfoSceneQueryReqVo vo ,HttpServletResponse response) throws IOException { // 1. 生成数据 ListUser users new ArrayList(); users.add(new User(1, 张三, 25, zhangsantest.com)); users.add(new User(2, 李四, 30, lisitest.com)); users.add(new User(3, 王五, 28, wangwutest.com)); response.addHeader(Content-Disposition, attachment;filename huyuqiao.xlsx); response.setContentType(application/vnd.ms-excel;charsetgb2312); try { // 从HttpServletResponse中获取OutputStream输出流 ServletOutputStream outputStream response.getOutputStream(); /* * EasyExcel 有多个不同的read方法适用于多种需求 * 这里调用EasyExcel中通过OutputStream流方式输出Excel的write方法 * 它会返回一个ExcelWriterBuilder类型的返回值 * ExcelWriterBuilde中有一个doWrite方法会输出数据到设置的Sheet中 */ EasyExcel.write(outputStream, User.class).sheet(测试数据).doWrite(users); } catch (IOException e) { e.printStackTrace(); } }问题说明主要问题就是使用了Valid RequestBody TestTaskInfoSceneQueryReqVo vo 参数这个会改变response流影响下载结果。可以改为下面的方式。正常版本引用pom引用保持不变实现代码PostMapping(/EasyExcel) Operation(summary 测试任务下载接口) public void download(RequestParam(required false) Integer taskType, RequestParam(required false) String station, RequestParam(required false) DateTimeFormat(pattern yyyy-MM-dd) Date startDate, RequestParam(required false) DateTimeFormat(pattern yyyy-MM-dd) Date endDate,HttpServletResponse response) throws IOException { // 1. 生成数据 ListUser users new ArrayList(); users.add(new User(1, 张三, 25, zhangsantest.com)); users.add(new User(2, 李四, 30, lisitest.com)); users.add(new User(3, 王五, 28, wangwutest.com)); response.addHeader(Content-Disposition, attachment;filename huyuqiao.xlsx); response.setContentType(application/vnd.ms-excel;charsetgb2312); try { // 从HttpServletResponse中获取OutputStream输出流 ServletOutputStream outputStream response.getOutputStream(); /* * EasyExcel 有多个不同的read方法适用于多种需求 * 这里调用EasyExcel中通过OutputStream流方式输出Excel的write方法 * 它会返回一个ExcelWriterBuilder类型的返回值 * ExcelWriterBuilde中有一个doWrite方法会输出数据到设置的Sheet中 */ EasyExcel.write(outputStream, User.class).sheet(测试数据).doWrite(users); } catch (IOException e) { e.printStackTrace(); } }各位小伙伴有好的方法可以评论区留言。

更多文章