首页 > 其他分享 >ElementUI 下载文件前后端代码

ElementUI 下载文件前后端代码

时间:2024-12-02 17:11:21浏览次数:4  
标签:value elink String ElementUI 代码 excelExportTemplate private response 下载

前端代码
store 中的js文件

import {excelExportTemplate
  }   from '@/api/xxxxx'
 async excelExportTemplate ({commit}, fieldConfig) {
    var res =await new Promise((resolve, reject) => {
      excelExportTemplate(fieldConfig).then(response => {
        resolve(response)
      }).catch(error => {
        reject(error)
      })
    })
    return res
  },

api总的方法

import request from '@/utils/request'
const prefix = 'xxxxxx/'
export function excelExportTemplate (params) {
    return request.post(prefix + 'excelExportTemplate',params, {
      responseType: 'blob',
    });//请求时,数据格式为blob
  }

request由于是封装的方法,增加blob格式方法
const res = response.data
    if (response.data instanceof Blob&&response.status=="200"){
      return res
    }

vue中的方法

excelExportTemplateBtn: function () {
        var querystring = require('querystring')
              var param = {}
              this.excelExportTemplate(querystring.stringify(param))
                .then(resp => {
                  this.downloadExcel(resp,'字段映射配置模板.xlsx')
                  this.$message({
                    type: 'success',
                    message:
                      '下载成功!'
                  });
                })
      },
downloadExcel (blobPart, filename) {
        const blob = new Blob([blobPart], { type: 'application/vnd.ms-excel' })
        // 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件
        const elink = document.createElement('a')
        elink.download = decodeURIComponent(filename)
        elink.style.display = 'none'
        elink.href = URL.createObjectURL(blob)
        document.body.appendChild(elink)
        elink.click()
        URL.revokeObjectURL(elink.href) // 释放URL 对象
        document.body.removeChild(elink)
      },

后端代码

@RequestMapping("excelExportTemplate")
    public void excelExportTemplate( HttpServletResponse response) throws IOException {
        try {
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码
            String fileName = URLEncoder.encode("字段映射配置模板", "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
            List<EntityVo> list = new ArrayList<EntityVo>();
            // 这里需要设置不关闭流
            EasyExcel.write(response.getOutputStream(), EntityVo.class)
                    .head(EntityVo.class)
                    .registerWriteHandler(new DefaultStyle())
                    .registerWriteHandler(new CustomCellWriteWeightConfig())
                    .registerWriteHandler(new CustomCellWriteHeightConfig())
                    .autoCloseStream(Boolean.FALSE)
                    .sheet("sheet1")
                    .doWrite(list);
        } catch (Exception e) {
            // 重置response
            response.reset();
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            Map<String, String> map = MapUtils.newHashMap();
            map.put("status", "failure");
            map.put("message", "导出失败" + e.getMessage());
            response.getWriter().println(map);
        }
    }

实体类

@Data
public class EntityVo{
    @ExcelProperty(value = "姓名", index = 0)
    private String A1;
    @ExcelProperty(value = "性别", index = 1)
    private String A2;
    @ExcelProperty(value = "年龄", index = 2)
    private String A3;
    @ExcelProperty(value = "爱好", index = 3)
    private String A4;
    @ExcelProperty(value = "颜色", index = 4)
    private String A5;
    @ExcelProperty(value = "介绍", index = 5)
    private String A6;
}

标签:value,elink,String,ElementUI,代码,excelExportTemplate,private,response,下载
From: https://www.cnblogs.com/zwgblogs/p/18582226

相关文章

  • 深入源代码,探秘Tomcat类加载机制:为何颠覆双亲委派原则(1)?
    1.什么是双亲委派 jvm启动后会通过其类装载子系统,去硬盘上找xxx.class文件,找到之后,会直接将xxx这个类装载到java虚拟机中,这个过程叫做类的加载。而类的加载过程中就涉及到了双亲委派。 类加载机制的双亲委派(ParentDelegationModel)是Java中的一种类加载策略,旨在确保Java......
  • Adobe Photoshop(PS2024)图像处理软件下载链接、图像编辑、照片修饰、图形设计、数字绘
    AdobePhotoshop软件简介AdobePhotoshop是由AdobeSystems开发的一款图像处理软件,广泛应用于图像编辑、照片修饰、图形设计、数字绘画、网页设计等多个领域。自1988年首次发布以来,Photoshop以其强大的功能与灵活的操作,成为了全球设计师和摄影师不可或缺的工具。获取安......
  • vscode上传已有的代码到git仓库以及解决ssh验证报错教程方法
    本文介绍了如何使用vscode推送已有的代码到git仓库方法教程,以及解决ssh验证报错的问题的方法。步骤一:新建一个仓库然后在vscode终端进入你要传的项目,使用命令初始化gitinit步骤二:输入命令绑定你在git上新建的空仓库也就是你需要上传代码的仓库,例如:gitremote......
  • vscode连接远程服务器vscode 未能下载vscode服务器(XHR failed)
    前言全局说明一直使用Vscode连接服务器调试代码,今天突然连接不上了,网上搜索了好多,都是没有效果。一、说明1.1环境:Windows11家庭版23H222631.3737VScode版本:1.91.0(usersetup)Ubuntu18.04.6LTS(Linuxqt-vm5.4.0-150-generic#167~18.04.1-UbuntuSMP......
  • 开源低代码平台-Microi吾码-接口引擎实战:微信支付回调接口
    接口引擎实战:微信支付回调接口前言预览图业务逻辑接口引擎V8代码Microi吾码-系列文档接口引擎实战-系列文档前言上一篇发布了【接口引擎实战:微信v3支付JSAPI下单】:https://microi.blog.csdn.net/article/details/144156119接口引擎与第三方平台对接无所不能,下一篇介......
  • 利用 Function 接口告别冗余(屎山)代码
    前言在Java开发的征途中,我们时常与重复代码不期而遇。这些重复代码不仅让项目显得笨重,更增加了维护成本。幸运的是,Java8带来了函数式编程的春风,以Function接口为代表的一系列新特性,为我们提供了破除这一难题的利剑。本文将以一个实际应用场景为例,即使用Java8的函数式编程......
  • 经典C语言代码——part 19(链表)
    【程序72】题目:创建一个链表。1.程序分析:2.程序源代码:/*creatalist*/#include"stdlib.h"#include"stdio.h"structlist{intdata;structlist*next;};typedefstructlistnode;typedefnode*link;voidmain(){linkptr,head;int......
  • C#毕业设计下载(全套源码+配套论文)——基于C#+asp.net+sqlserver的报表管理系统设计与
    基于C#+asp.net+sqlserver的报表管理系统设计与实现(毕业论文+程序源码)大家好,今天给大家介绍基于C#+asp.net+sqlserver的报表管理系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于C#+asp.net+sqlserver的报表管理系统设计与实现(毕业论文+程序源码)1、项......
  • C#毕业设计下载(全套源码+配套论文)——基于C#+asp.net+sqlserver的城市公交查询系统设
    基于C#+asp.net+sqlserver的城市公交查询系统设计与实现(毕业论文+程序源码)大家好,今天给大家介绍基于C#+asp.net+sqlserver的城市公交查询系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于C#+asp.net+sqlserver的城市公交查询系统设计与实现(毕业论文+程......
  • .NET开源低代码平台-Microi吾码-成功案例-工业生产管理ERP系统
    工业生产管理ERP系统简介系统截图项目在线demo试用简介一套非常强大的ERP系统,由予珩科技团队基于Microi吾码独立开发该企业开发的服装生产ERP【目前已售97套】:https://microi.blog.csdn.net/article/details/143637262共150+功能模块、216张物理表、63个接口引擎、1......