EasyExcel实现下载Excel(解决无法从浏览器下载问题)

news/2024/10/22 10:42:32/

请求成功,响应二进制数据,但是页面不下载

页面放了一个下载按钮,点击下载后,可以正常请求下载的接口,而且也成功响应,但是文件不会从浏览器页面下载下来。

 <div><button onclick="down()">下载Excel</button></div>
 function download() {$.ajax({type: 'GET',url: '/download',success: function (data) {layer.msg(data.message)}});}

原因是发送Ajax请求后,后端响应的是二进制数据,jQuery的Ajax只能接收JSON等数据。

在这里插入图片描述
在这里插入图片描述

解决办法:

1、最简单的办法,在新的标签页请求接口,在请求接口上自己拼接参数

function download() {window.open("/download");
}

2、创建一个form表单,提交表单的方式下载

function download() {var studentName = 1;var form = document.createElement('form');form.id = 'form';form.name = 'form';//把这个form放在body里面document.body.appendChild(form);//给form里面创建一个input框,隐藏掉,来存参数var input = document.createElement('input');input.type = 'hidden';input.name = 'studentName';input.value = studentName;//把input放在form里面form.appendChild(input);form.method = "GET" //请求方式form.action = '/download';form.submit();//删掉formdocument.body.removeChild(form)
}

——完——

EasyExcel官方文档

示例:

@RestController
public class StudentController {@RequestMapping("/download")public JsonResult download(HttpServletResponse response) throws IOException {//文件名需要这样写,不能在setHeader直接写中文名,否则下载的文件名字为空,只有后缀String fileName = new String("学生表.xlsx".getBytes(), StandardCharsets.ISO_8859_1);response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf8");response.setHeader("Content-disposition", "attachment;filename=" + fileName );EasyExcel.write(response.getOutputStream(), Student.class).sheet("sheet").doWrite(getStudentList());return new JsonResult().setCode(1).setMessage("下载成功!").setData(null);}private List getStudentList() {ArrayList<Student> students = new ArrayList<>();for (int i = 0; i < 1000; i++) {Student student = new Student(i, "名字" + i, i, new Date());students.add(student);}return students;}
}

Student类(Excel行对象)

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {@ExcelProperty("学号")private Integer id;@ExcelProperty("姓名")private String name;@ExcelProperty("年龄")private Integer age;@ExcelProperty("出生日期")private Date birthday;
}

http://www.ppmy.cn/news/567234.html

相关文章

使用xlwings操作excel大全--最新

xlwings 操作excel def open(filenameNone,visibleFalse, readonlyFalse, passwordNone,write_passwordNone): #filename 文件路径&#xff0c;打开,没有文件名则创建 #visible 打开是否可见 #readonly 是否打开只读 #password 文件读取密码 #write_password 设置文件密码 该方…

easyexcel 2.2.6 新版本以列表的形式读取 Excel

使用步骤&#xff1a; 注&#xff1a;讲述使用 EasyExcel 的读取 Excel 数据列表的案例&#xff0c;项目基于 springboot maven 模式。 1、引入 EasyExcel 依赖包&#xff0c;文章以 easyexcel 2.2.6 为基础。 <dependency><groupId>com.alibaba</groupId>&…

Spire.XLS:一款Excel处理神器

正文 前言&#xff1a;最近项目里面有一些对Excel操作的需求&#xff0c;博主想都没想&#xff0c;NPOI呗&#xff0c;简单、开源、免费&#xff0c;大家都喜欢&#xff01;确实&#xff0c;对于一些简单的Excel导入、导出、合并单元格等&#xff0c;它都没啥太大的问题&#…

报表控件Stimulsoft v2023.1全新发布 | 附免费下载试用

Stimulsoft Ultimate 宣布发布新版本2023.1&#xff01;在最新版本中添加了对Razor Pages的支持、新的数据监视器可视化工具、为PHP和Blazor平台更新了组件,欢迎下载试用&#xff01; Stimulsoft Ultimate官方正版下载 Razor Pages 在 2023.1.1 版中&#xff0c;我们添加了对…

编辑 用Excel制作股票交易表格/日志,带macro宏程序(vba)更新V1.5

写在前面 交易股票最好要记录每一笔交易&#xff0c;交易记录能帮助我们回忆和分析交易中的成功失败&#xff0c;以获得交易技能的提升&#xff0c;甚至可以使我们头脑更加清晰&#xff0c;不至于做出错误判断和冲动交易。 于是本着每一笔交易都详细记录的投资者&#xff0c;…

Excel神器之xlwings的安装

使用强大的xlwings插件可以大大提高你的Excel使用效率。 但是在安装过程中会遇到各种各样的踩坑问题&#xff0c;下面是xlwings的安装过程 第一步 确定你的python版本 例如我这里是python3.9.1&#xff0c;我们可以通过 windowR 输入 cmd 通过命令查看 python --version 第二…

(一)python实战——使用Pyinstaller打包一个python的exe可执行文件

前言 在python编程中&#xff0c;我们往往需要将我们的应用程序打包成一个可执行文件&#xff0c;方便使用。如果是单独的python文件&#xff0c;其他人使用前必须要先安装python环境&#xff0c;在python环境中通过命令执行我们的python程序。本节内容我们主要介绍一下使用Py…

Windows电脑怎么通过ssh访问GitHub

Windows系统访问GitHub可以通过使用Git Bash&#xff0c;它是Git版本控制软件的命令行版&#xff0c;包含了SSH客户端。你可以按照下面的步骤来配置和使用&#xff1a; 如果你还没有安装Git Bash&#xff0c;你可以去Git的官方网站(https://git-scm.com/)下载并安装。在安装过程…