首页 > 其他分享 >第十七篇 - 下载XLSX文件的两种方式

第十七篇 - 下载XLSX文件的两种方式

时间:2023-09-27 10:55:33浏览次数:25  
标签:XLSX sheet wb excel 第十七 test path response 下载

这篇介绍Excel下载的两种方式。SpringMVC + Vue3

一、使用BLOB文件流下载Excel

参考链接:https://blog.csdn.net/m0_66607230/article/details/129161820

先来看看后端Controller的代码

controller.java

@RequestMapping(value = "/downloadExcel", method = RequestMethod.POST)
    @ResponseBody
    public void DownloadExcel(@ModelAttribute("User") User user, HttpServletRequest request, HttpServletResponse response) throws IOException{
//        String excel_path = request.getParameter("test_excel_path"); // 前端传递模板excel路径
        String excel_path = "D:\\test.xlsx"; // 直接定义模板excel路径进行测试
        Workbook wb = null;
        Sheet sheet = null;
        FileInputStream inputStream = new FileInputStream(excel_path);
        wb = new XSSFWorkbook(inputStream); // 读取模板表格内容
        if (wb != null) {
            try {
                sheet = wb.getSheetAt(18); // 读取第18个sheet,excel表中sheet是从0开始数起
                Row row = sheet.getRow(2);  // 定位excel的第2行,行数也是从0开始数起
                Cell cell1 = row.getCell(2); // 定位excel的第2行第2列,列数也是从0数起
                System.err.println(getStringCellValue(cell1)); // 打印第2行第2列的字符串
                Cell word = row.getCell(3);  // 定位excel的第2行第3列
                word.setCellValue("test words"); // 设置excel的第2行第3列的信息为test words

                response.setContentType("application/vnd.ms-excel;charset=utf-8"); // 设置响应格式,前端要与这保持一致
                response.setHeader("Content-Disposition",
                        "attachment;filename=\"" + new String(("文档名称.xlsx").getBytes("gb2312"), "ISO8859-1"));
                OutputStream output = response.getOutputStream();
                wb.write(output); // 将修改后的表格信息写入response输出
                output.close();
                inputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
View Code

 

这一段代码就是返回的blob文件流。

再来看看前端Vue如何接收

async downloadExcel() {
      let data_excel = {
        "test_excel_path": this.testexcelpath,
      }
      // 后端保存excel
      await axios
          .post('http://ip:port/project/downloadExcel', qs.stringify(data_excel), {responseType: 'blob'})
          .then(successResponse => {
            console.log(successResponse.data)
            var a = document.createElement('a')
            const blob = new Blob([successResponse.data],{type: 'application/vnd.ms-excel'})
            a.href = URL.createObjectURL(blob)
            a.download = "aaa.xlsx"
            a.style.display = 'none'
            document.body.appendChild(a)
            a.click()
            document.body.removeChild(a)
            console.log("下載成功")
          })
          .catch(failResponse => {
            console.log(failResponse)
          })
}
View Code

 

这样点击下载按钮时,会触发downloadExcel函数,浏览器会把它下载到客户端默认的下载文件夹中

 

二、服务器存在excel本地文件,客户端通过windows.open访问URL下载

 

标签:XLSX,sheet,wb,excel,第十七,test,path,response,下载
From: https://www.cnblogs.com/smart-zihan/p/17732165.html

相关文章

  • Python 图片并行下载
    需求:有大量图片的url需要将其快速下载到本地技术点:采用编写并发代码的库asyncio以及基于asyncio实现的HTTP框架aiohttppipinstallasynciopipinstallaiohttp代码如下:importjsonimportosimportrequestsimportaiohttpimportasyncioimage_save_dir="images"......
  • macOS Sonoma 14 (23A344) 正式版发布,ISO、IPSW、PKG 下载
    macOSSonoma今日推出,全面提升生产力和创意工作流macOSSonoma14(23A344)正式版发布,ISO、IPSW、PKG下载2023年9月26日(北京时间27日凌晨)macOSSonoma正式版现已发布。本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,......
  • macOS Sonoma 14 (23A344) 正式版 Boot ISO 原版可引导镜像下载
    macOSSonoma14(23A344)正式版BootISO原版可引导镜像下载2023年9月26日(北京时间27日凌晨)macOSSonoma正式版现已发布。本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows......
  • 如何用java代码实现上传文件和下载文件
    如何用java代码实现上传文件:首先创建一个项目创建index.jsp页面如下只要是上传文件就要使用form标签的enctype属性:<!--只要是涉及到上传文件enctype="multipart/form-data"--><formaction="UploadServlet"method="post"enctype="multipart/form-data"> &l......
  • 前端a标签下载文件
    问题描述:后端直接返回牵牛的文件储存地址,前端想自定义下载文件的名称不成功解决办法:转为get请求,将返回值改为blod格式/***用于后端直接返回url牵牛下载地址并且需要自定义下面文件名称*@param{请求参数}data{url,fileName}*/vardownload=function(url,fil......
  • EasyExcel实现excel文件重复多次写入和导出&下载文件
    一、EasyExcel实现excel文件的导出官方文档导入依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>o......
  • 超星读书下载的pdz文件如何转为pdf文件详细教程(亲测有效)
    前言:你还在为超星读书下载的pdz格式书籍而烦恼吗?还在为不知道怎么将pdz格式转为pdf格式而气愤吗?请看以下教程。流程:使用超星阅读器将pdz文件转换为.xps或.oxps文件利用第三方软件将.xps或.oxps文件转换为pdf文件踩坑提醒(可跳过直接看步骤一):主要是第二步中需要找到支持.xp......
  • 第十六篇 - URL链接中包含中文则下载失败
    问题简介:当文件在服务器上,从客户端下载方式一般是:http://ip:port/files/文件名。举个例子:当访问http://11.123.123.12:8080/files/test.xlsx,可以成功下载。当访问http://11.123.123.12:8080/files/test_测试.xlsx,则下载失败,报404错误。解决方案:参考链接:https://blog.csdn.ne......
  • 手机成绩分析软件排行榜TOP10下载
    随着智能手机的普及和移动应用的快速发展,手机成绩分析软件越来越受到学生、家长和教育机构的关注。这些软件可以帮助用户方便地记录、分析和管理学生成绩,提供个性化的学习指导和反馈。在本文中,将详细介绍2023年手机成绩分析软件排行榜的TOP10,并对它们的特点、功能和使用体验进行......
  • Adobe Captivate 9.0下载(adobe屏幕录制软件)下载 各个版本下载
    AdobeCaptivate是一款综合性创作工具,可为家庭用户、学生和专业人士提供简化的电子学习创建平台,用于创建交互式教育内容,例如软件演示、分支场景、随机谜题、软件模拟等。AdobeCaptivate在创建和发布电子学习内容方面拥有超过15年的经验,如今已发展成为一个强大的创作和项目导出工......