刚来公司第二天, 甩了个需求, 把两个不同表格的数据 导出到同一个excel中 ........额,好吧

你要说,两个表格数据差不多, 直接合并数据导出就行:

async function getData() {
let data1 = await this.get1();
let data2 = await this.get2();
data3 = data1.concat(data2)
}

vue多个数据不一样的表格统一导出excel

废话不多说, 上图上代码:

1. 安装依赖

进入项目文件夹,安装 xlsx

npm install xlsx

2. vue页面代码:  (随拿就用)

<template>
<div class="hello">
<h1>导出excel, 多个表格的数据导出到同一张excel, 两个sheel显示</h1>
<button @click="getExcel">导出excel</button>
</div>
</template> <script>
import XLSX from 'xlsx' //引入xlsx
export default {
name: 'HelloWorld',
data() {
return {
msg: ''
}
},
mounted() {},
methods: {
// 导出excel, 多个表格的数据导出到同一张excel, 两个sheel显示
getExcel() {
// 表格数据1
let sheet1data = [
{ department: '行政部', count: 2 },
{ department: '前端部', count: 2 }
]
// 表格数据2
let sheet2data = [
{ name: '张三', do: '整理文件' },
{ name: '李四', do: '打印' }
]
// 修改数组对象中对象属性名, 因为属性都是英文名, 所以要匹配成 中文, 这样excel导出的是中文属性名 -------start
let sheet1data_china = sheet1data.map((v) => {
return { 部门: v.department, 数量: v.count }
})
let sheet2data_china = sheet2data.map((v) => {
return { 姓名: v.name, 行为: v.do }
})
// 修改数组对象中对象属性名, 因为属性都是英文名, 所以要匹配成 中文 -------end
var sheet1 = XLSX.utils.json_to_sheet(sheet1data_china) //json_to_sheet 将 JS 对象数组转换为工作表。 //aoa_to_sheet 将 JS 数据数组的数组转换为工作表。
var sheet2 = XLSX.utils.json_to_sheet(sheet2data_china) /* create a new blank workbook */
var wb = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(wb, sheet1, '部门统计')
XLSX.utils.book_append_sheet(wb, sheet2, '行政部')
const workbookBlob = this.workbook2blob(wb) this.openDownloadDialog(workbookBlob, `部门统计.xlsx`)
},
// 将workbook装化成blob对象
workbook2blob(workbook) {
// 生成excel的配置项
var wopts = {
// 要生成的文件类型
bookType: 'xlsx',
// // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
bookSST: false,
type: 'binary'
}
var wbout = XLSX.write(workbook, wopts)
// 将字符串转ArrayBuffer
function s2ab(s) {
var buf = new ArrayBuffer(s.length)
var view = new Uint8Array(buf)
for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff
return buf
}
var blob = new Blob([s2ab(wbout)], {
type: 'application/octet-stream'
})
return blob
}, // 将blob对象创建bloburl,然后用a标签实现弹出下载框
openDownloadDialog(blob, fileName) {
if (typeof blob == 'object' && blob instanceof Blob) {
blob = URL.createObjectURL(blob) // 创建blob地址
}
var aLink = document.createElement('a')
aLink.href = blob
// HTML5新增的属性,指定保存文件名,可以不要后缀,注意,有时候 file:///模式下不会生效
aLink.download = fileName || ''
var event
if (window.MouseEvent) event = new MouseEvent('click')
// 移动端
else {
event = document.createEvent('MouseEvents')
event.initMouseEvent(
'click',
true,
false,
window,
0,
0,
0,
0,
0,
false,
false,
false,
false,
0,
null
)
}
aLink.dispatchEvent(event)
}
}
}
</script>

xlsx 官方文档: https://github.com/SheetJS/sheetjs#utility-functions

对新手福利: 本人码云仓库代码地址 :  https://gitee.com/bigbear520/excel-moreOut/tree/master

js案例链接: https://frontzhm.github.io/web-demo/export-excel/

vue多个数据不一样的表格导出到同一张excel里面的更多相关文章

  1. vue实现对数据的增删改查(CURD)

    vue实现对数据的增删改查(CURD) 导语: 网上看到一个写的比较好的学习文章,转载分享一下 在管理员的一些后台页面里,个人中心里的数据列表里,都会有对这些数据进行增删改查的操作.比如在管理员后台的 ...

  2. easyui datagrid 可过滤行的数据表格 导出

    //过滤栏表格导出数据                  /* xukf                 * id datagrid id                 * url Action 路 ...

  3. servlet+ajax+json字符串后台传入,前端解析并把数据循环填入表格实例

    写在前面:1.源代码来源于博客http://blog.sina.com.cn/u/2904067371 ,在此基础上对于前端代码稍作更改,把传过来的数据解析并传入表格2.json解析,用eval()3 ...

  4. java中使用poi导出excel表格数据并且可以手动修改导出路径

    在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下

  5. vue ajax获取数据的时候,如何保证传递参数的安全或者说如何保护api的安全

    https://segmentfault.com/q/1010000005618139 vue ajax获取数据的时候,如何保证传递参数的安全或者说如何保护api的安全 点击提交,发送请求.但是api ...

  6. Vue之九数据劫持实现MVVM的数据双向绑定

    vue是通过数据劫持的方式来做数据绑定的,其中最核心的方法便是通过Object.defineProperty()来实现对属性的劫持,达到监听数据变动的目的. 如果不熟悉defineProperty,猛 ...

  7. vue中的数据监听以及数据交互

    现在我们来看一下vue中的数据监听事件$watch, js代码: new Vue({ el:"#div", data:{ arr:[,,] } }).$watch("ar ...

  8. 从Object.definedProperty中看vue的双向数据的绑定

    前言 Object.defineProperty是ES5中的方法,它可以直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象.vue.js正式利用这种方法实现数据的双向绑定,以 ...

  9. TP5.0 PHPExcel 数据表格导出导入(引)

    TP5.0 PHPExcel 数据表格导出导入(引) 今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExc ...

随机推荐

  1. QQ音乐官方定制精简版v1.3.6 纯净无广告

    介绍 近期腾讯推出了QQ音乐简洁版.顾名思义,QQ音乐简洁版就是官方精简后的版本,没有内置任何广告.完全专注于听歌,不存在直播.K歌.短视频等花里胡哨的内容.如有违规,请删删.. 结尾附pc端 QQ音 ...

  2. 【一周聚焦】 联邦学习 arxiv 2.16-3.10

    这是一个新开的每周六定期更新栏目,将本周arxiv上新出的联邦学习等感兴趣方向的文章进行总结.与之前精读文章不同,本栏目只会简要总结其研究内容.解决方法与效果.这篇作为栏目首发,可能不止本周内容(毕竟 ...

  3. tep完整教程帮你突破pytest

    持续维护的教程 tep教程会随着版本更新或经验积累,持续维护在电子书中,最新的最全的内容请锁定这篇文章[最新]tep完整教程帮你突破pytest: https://dongfanger.gitee.i ...

  4. 基于idea做java程序的本地k8s调试-skaffold(二)

    上一篇讲完了java代码发到本机minikube中run,这篇来讲讲minkube中进行debug(idea下) 话说,上篇是把pigx基础infra微服务都发到了minikube中,这些微服务是ru ...

  5. 人生苦短,我用JRebel

    昨天看到团子推送的一篇关于热部署的文章,其中介绍了自研的Sonic插件在公司内部的应用.同时晒出来一张对比图: 团子表示我们的插件要比同类插件优秀哦.不过我定睛一看,好家伙,第一列的JRebel在图中 ...

  6. 1.SQL常用命令

    常用命令 连接命令 (1)conn[ect] 用法: conn 用户名/密码@网络服务名 [as sysdba/sysoper] 当用特权用户身份连接时,必须带上 as sysdba 或是 as sy ...

  7. WPF之转换器

    IValueConverter的用法1. COnvert方法object Convert( object value, Type targetType, object parameter, Cultu ...

  8. spring——AOP(静态代理、动态代理、AOP)

    一.代理模式 代理模式的分类: 静态代理 动态代理 从租房子开始讲起:中介与房东有同一的目标在于租房 1.静态代理 静态代理角色分析: 抽象角色:一般使用接口或者抽象类来实现(这里为租房接口) pub ...

  9. Termux镜像在阿里云镜像站首发上线

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 简介 Termux 是 Android 平台上的一个终端模拟器,它将众多 Linux 上运行的软件和工具近乎完美的移植到了手机端. 无需任何复杂的安 ...

  10. oracle报ORA-12154

    环境 [oracle@oracle admin]$ sqlplus -vSQL*Plus: Release 19.0.0.0.0 - Production Version 19.3.0.0.0 问题描 ...