项目中我们可能会碰到导出Excel文件的需求,一般后台管理系统中居多,将table中展示的数据导出保存到本地。当然我们也可以通过一些处理来修改要导出的数据格式,具体需求具体对待。

1、首先我们需要安装3个依赖,file-saverxlsxscript-loader

使用npm安装:


npm install file-saver xlsx -S
npm install script-loader -D

使用yarn安装:


yarn add file-saver xlsx -S
yarn add script-loader -D

2、在/src目录下新建一个vendor(名字也可自取)文件夹,存入Blob.jsExport2Excel.js文件。

这个两个文件你可以直接戳这里 CSDN下载

有积分就1积分支持一下,没有也可以去我的 github下载

当然也可以自行下载,或许会有版本的问题吧。

3、在/build/webpack.base.conf.js中新增一行代码(vendor的名字必须和第二步新建的文件夹名字相同)。


resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
'vendor': path.resolve(__dirname, '../src/vendor') // 新增这一行
}
}

4、在vue项目中的使用。


/**
* excel导出
*/
exportTable () {
// this.DefaultData.exportExcelMax限制一下导出的总条数
if (this.totals <= this.DefaultData.exportExcelMax) {
this.$confirm('确定要导出当前<strong>' + this.totals + '</strong>条数据?', '提示', {
dangerouslyUseHTMLString: true,
confirmButtonText: '确定',
cancelButtonText: '取消'
}).then(() => {
this.getExpportData()
}).catch(() => {
})
} else {
this.$confirm('当前要导出的<strong>' + this.totals + '</strong>条数据,数据量过大,不能一次导出!<br/>建议分时间段导出所需数据。', '提示', {
dangerouslyUseHTMLString: true,
showCancelButton: false
}).then(() => {
}).catch(() => {
})
}
}, /**
* 对导出数据格式处理
*/
formatJson (filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => v[j]))
}, /**
* 导出的列表数据
*/
getExpportData: function () {
const loading = this.$loading({
lock: true,
text: '正在导出,请稍等......',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
const data = {
phoneNo: this.formInline.phoneNo,
userName: this.formInline.userName,
amount: this.formInline.amount,
fee: this.formInline.fee,
currentPage: this.currentPage,
pageSize: this.DefaultData.exportExcelMax
}
// 这里封装了axios,根据自身情况修改即可
this.http(
this.ApiSetting.orderExport,
data
).then((res) => {
// handleDataList这里可以对导出的数据根据需求做下处理
const handleDataList = res.data.list
for (let i in res.data.list) {
handleDataList[i].amount = res.data.list[i].amount * 100
handleDataList[i].fee = res.data.list[i].fee + '%'
}
if (res.data.list.length > 0) {
require.ensure([], () => {
/* eslint-disable */
// 这里的径路要修改正确
const { export_json_to_excel } = require('../../vendor/Export2Excel')
/* eslint-enable */
// 导出的表头
const tHeader = ['手机号码', '用户姓名', '交易金额', '手续费']
// 导出表头要对应的数据
const filterVal = ['phoneNo', 'userName', 'amount', 'fee']
// 如果对导出的数据没有可处理的需求,把下面的handleDataList换成res.data.list即可,删掉上面相应的代码
const data = this.formatJson(filterVal, handleDataList)
// this.DefaultData.formatLongDate.getNow()自己写的一个获取当前时间,方便查找导出后的文件。根据需求自行可处理。
export_json_to_excel(tHeader, data, '订单查询列表-' + this.DefaultData.formatLongDate.getNow())
this.$message({
message: '导出成功',
duration: 2000,
type: 'success'
})
})
} else {
this.$message({
message: '数据出錯,请联系管理员',
duration: 2000,
type: 'warning'
})
}
loading.close()
}, error => {
console.log(error)
loading.close()
})
}

在需要导出功能的页面加入上面三个方法,修改好需要注意的事项,导出Excel表格就ok了。

来源:https://segmentfault.com/a/1190000016457561

vue中导出Excel表格的更多相关文章

  1. 在vue中导出excel表格

    初学者学习vue开发,想把前端项目中导出Excel表格,查了众多帖子,踩了很多坑,拿出来与大家分享一下经验. 安装依赖 //npm npm install file-saver -S npm inst ...

  2. Vue中导出Excel表格方法

    本文记录一下在Vue中实现导出Excel表格的做法.参考度娘上各篇博客,最后实现功能 Excel表格,我的后端返回的是数据流,然后文件名是放进了content-disposition中,前端进行获取. ...

  3. spring mvc项目中导出excel表格简单实现

    查阅了一些资料,才整理出spring mvc 项目导出excel表格的实现,其实很是简单,小计一下,方便以后查阅,也希望帮助有需要的朋友. 1.导入所需要依赖(Jar包).我使用的是maven,所以坐 ...

  4. vue 导出excel表格

    对于涉及到数据比较多的管理后台导出excel 表格这个需求就非常的常见了 所以? vue 怎么到处excel表格的? 有两种办法 1:请求接口后台直接给你的是excel文件,你需要做的就是怎么接收ex ...

  5. vue 纯前端导出 excel 表格

    在开发后台管理系统的时候,很多地方都要用到导出excel 表格,比如将table中的数据导出到本地,那么实现这种需求往往有两种方案: 一.后端开发一个下载链接,前端将这个链接放到 a 标签的 href ...

  6. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...

  7. js导出excel表格中较长数字串会变成科学计数法问题

    在做项目中,遇到导出excel表格时,银行账户号数字过长,导出的数字串变为计数法形式,如下图: 网上搜到解决方法,粘贴到这以供学习.不断更新. 原博地址:http://www.cnblogs.com/ ...

  8. Vue项目中将table组件导出Excel表格以及打印页面内容

    体验更优排版请移步原文:http://blog.kwin.wang/programming/vue-table-export-excel-and-print.html 页面中显示的table表格,经常 ...

  9. NPOI_winfrom导出Excel表格(二)(直接打开Excel软件,将数据填充在当前的sheet中)

    //// 存储路径弹框选择 SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.DefaultExt = "xls&qu ...

随机推荐

  1. Bat命令学习 (转载)

    基础部分:====================================================================== 一.基础语法: 1.批处理文件是一个“.bat” ...

  2. net3:Button的CommandName使用,AdRotator,BulletedList的使用

    原文发布时间为:2008-07-29 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  3. 使用 ftrace 调试 Linux 内核,第1部分

    ftrace 是 Linux 内核中提供的一种调试工具.使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用.本系列文章对 ftrace 进行了介绍,分为三部分 ...

  4. 有关 GCC 及 JNA 涉及动态库/共享库时处理库文件名的问题

    动态库尤其是共享库在 Linux 环境下普遍存在库文件名包含版本号的情况,比如 Linux 环境下经常会发现一个共享库的真实文件名是 libfoo.so.1.1.0,而同时会有多个指向该真实库文件的软 ...

  5. Wannafly挑战赛11 D 题 字符串hash + 卡常

    题目链接 https://ac.nowcoder.com/acm/contest/73#question map与order_map https://blog.csdn.net/BillCYJ/art ...

  6. BZOJ 2957 楼房重建 (线段树)

    题目链接  楼房重建 解题思路:我们可以把楼房的最高点的斜率计算出来.那么问题就转化成了实时查询x的个数,满足数列x的左边没有大于等于x的数. 我们可以用线段树维护 设t[i]为如果只看这个区间,可以 ...

  7. List 与 ArrayList 的使用

    最近回顾 java 集合,发现大部分程序中都在使用 List list = new ArrayList(); 也有部分程序使用 ArrayList list = new ArrayList(); 那么 ...

  8. uibutton去掉点击后背景有阴影的方法

    1,将normal和highlight两种方式都设置上图片即可 UIButton *goback = [[UIButton alloc]initWithFrame:CGRectMake(5.0f, 5 ...

  9. time machine不备份指定文件夹

    osx中常常会使用timemachine来备份一些文件,timemachine能够使某个文件夹恢复到之前某个时刻的状态,很的方便.但是备份须要空间,特别是有些我们并不想备份一些无关紧要的文件,比方电影 ...

  10. 怎样使用1M的内存排序100万个8位数

    今天看到这篇文章.颇为震撼.感叹算法之"神通". 借助于合适的算法能够完毕看似不可能的事情. 最早这个问题是在Stack Overflow站点上面给出的(Sorting numbe ...