vue下载文件模板(excel) 和 导出excel表格
1. get形式传参数
仅限于get方式,注意请求头参数...,需要后台放开
window.location = '/dms-underlying-asset/download?assetType=' + localStorage.getItem('assetType')
2. post形式传参数
前端项目中使用最多的
注意:请求类型:responseType: "blob"
(1)定义接口(post请求,responseType:数据返回类型为blob)
1 export function download(data) {
2 return request({
3 url: `api/exportExcel`,
4 method: 'post',
5 responseType: 'blob',
6 data
7 })
8 }
(2)调用接口
1 const res = await download(this.form)
2 // 等同于
3 // axios.post('/api/exportExcal', this.form, {responseType: //"blob"}).then(res => {})
4
5 console.log(res, '这里会看到返回的blob文件流') // 类似这种
6
7 if (!res) return //
8 const excelTitle = "嘤嘤嘤.xlsx"
9
10 this.readFileDownload(res, excelTitle) // 封装读取文件并下载
(3)封装读取文件并下载
这里涉及到几个问题:
1. FileReader 读取bolb流文件,参考:https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader
FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。
2. content-type(res.type === 'application/octet-stream')我们在解析res.type的时候,参考:https://blog.csdn.net/u012894692/article/details/88846401
export function readFileDownload(data, msg) {
var res = data
if (res.type === 'application/json' || res.type === 'application/json;charset=UTF-8') { // 失败的时候,注意ie兼容问题
let fileReader = new FileReader()
fileReader.onload = function(event) {
let jsonData = JSON.parse(this.result) // this.result是根据event,读取文件后打印的 event.target.reslut
console.log(jsonData, '...............')
if (jsonData.data === null && jsonData.code === 1) {
Message({
message: jsonData.msg || 'Error',
type: 'error',
duration: 5 * 1000
})
}
}
fileReader.readAsText(res)
}
if (res.type === 'application/octet-stream' || res.type === 'application/vnd.ms-excel' || res.type === 'application/vnd.ms-excel;charset=UTF-8') {
console.log('success...') // 成功,注意ie兼容问题
const blob = new Blob([res], { type: 'application/vnd.ms-excel;charset=utf-8' })
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob, msg)
} else {
console.log(blob)
const url = window.URL.createObjectURL(blob)
console.log(url)
const aLink = document.createElement('a')
aLink.style.display = 'none'
aLink.href = url
aLink.setAttribute('download', msg)
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink)
window.URL.revokeObjectURL(url)
}
}
}
3,将表格的下载成excel表格(table表格绑定id)
这种方式怎么说呢,感觉不实用,仅限于前端页面的table表格,在没有后台接口的情况下,(有分页的话还比较难搞),不实用
// 导出表格
var wb = XLSX.utils.table_to_book(document.querySelector('#mytable')) //mytable为表格的id名
var wbout = XLSX.write(wb, {
bookType: 'xlsx',
bookSST: true,
type: 'array'
})
try {
FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), '统计表.xlsx')
} catch (e) {
if (typeof console !== 'undefined') console.log(e, wbout)
}
return wbout
vue下载文件模板(excel) 和 导出excel表格的更多相关文章
- C#变成数据导入Excel和导出Excel
excel 基础 •整个excel 表格叫工作表:workbook:工作表包含的叫页:sheet:行:row:单元格:cell. •excel 中的电话号码问题,看起来像数字的字符串以半角单引号开头就 ...
- [转]Excel.dll 导出Excel控制
Excel.dll 导出Excel控制 2010-06-12 11:26 2932人阅读 评论(2) 收藏 举报 excelmicrosoftstring产品服务器google 最近做了个导出Exce ...
- 纳税服务系统【用户模块之使用POI导入excel、导出excel】
前言 再次回到我们的用户模块上,我们发现还有两个功能没有完成: 对于将网页中的数据导入或导出到excel文件中,我们是完全没有学习过的.但是呢,在Java中操作excel是相对常用的,因此也有组件供我 ...
- [poi使用]使用excel模版导出excel
Apache POI是基于Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)处理各种文件格式的开源项目.简而言之,您可以使用Java读写MS ...
- 前端vue下载文件时blob返回流中怎么获取文件名
我很久之前写了一篇前端vue利用blob对象下载文件,有些人私信我,如果后端返回流失败,给出的json对象该怎么获得?前端获取的流怎么能获取原文件名?其实在那篇文章之后,我就已经针对这两个问题进行了优 ...
- POI操作EXCEL之导出Excel(设置有效性,下拉列表引用)
本人使用的是poi-bin-3.10-FINAL-20140208.zip 版本的poi以下是程序关键代码: //需要引用的类 import java.io.File; import java.io. ...
- C#导出EXCEL(DataTable导出EXCEL)
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.I ...
- javaweb下载文件模板
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import javax ...
- vue下载文件
import fileDownload from 'js-file-download' let params = { ", ", "filename":&quo ...
- 【Java excel】导出excel文件
TestExprot package excel; import java.io.File; import java.io.IOException; import java.text.DateForm ...
随机推荐
- redis为什么是单核单线程
1)以前一直有个误区,以为:高性能服务器 一定是多线程来实现的 原因很简单因为误区二导致的:多线程 一定比 单线程 效率高,其实不然! 在说这个事前希望大家都能对 CPU . 内存 . 硬盘的速度都有 ...
- Typora安装及MarkDown语法使用
Typora下载及安装 1.百度直接搜索Typora,第一个词条点进去 2.进入之后点击Download 3.选择操作系统,因为我的是windows,所以我选择windows版本进行下载 4.根据自己 ...
- .net Core5.0使用IdentityServer4 进行权限控制
.net Core5.0使用IdentityServer4 进行权限控制 IdentityServer4 ASP.NET Core的一个包含OpenID Connect和OAuth 2.0协议的框架 ...
- springboot修改事务隔离级别
[SpringBoot]事务的隔离级别.Spring的事务传播机制_51CTO博客_springboot事务隔离级别
- Exception processing template "index": An error happened during template rendering
问题所在 brandList[0].brandId出错,要不就改正,要不就把他删了,注释也会报错.
- Oracle数据库安装时,安装报错ins_emagent.mk
安装oracle数据库过程中,通过图形界面安装,出现ins_emagent.mk报错提示 解决方法 修改$ORACLE_HOME/sysman/lib/ins_emagent.mk,将$(MK_EMA ...
- Go_day08
Go的Io流 获取文件信息 //获取文件 fileinfo, err := os.Stat("./aa.txt")//相对绝对路径都可以 if err != nil { fmt.P ...
- Vscode 界面语言换成中文
作为编译器,Visual Studio Code是非常多能化的,但是界面英文对于我这种菜鸟新手造成了很大的困扰. 所以切换成中文更方便. Ctrl+shift+x 在左侧出现"扩展&qu ...
- Why WebRTC|“浅入深出”的工作原理详解
前言 近几年实时音视频通信应用呈现出了大爆发的趋势.在这些实时通信技术的背后,有一项不得不提的技术--WebRTC. 今年 1 月,WebRTC 被 W3C 和 IETF 发布为正式标准.据调研机构 ...
- vRealize Operations Manager 安全补丁修复
vRealize Operations Manager 安全补丁修复 背景:记录一次安全同事在检测中发现 vRealize Operations Manager 存在安全漏洞,需要整改修复,于是到VM ...
