//建议安装 0.16.3 的xlsx,高版本的好像会有问题 "file-saver": "^2.0.2", "xlsx": "^0.16.3"
npm install -S file-saver
npm install [email protected] -S
npm install -D script-loader
在src目录下新建utils文件夹,里面放入Blob.js和Export2Excel.js和dateUtil.js三个JS文件
import Blob from './utils/Blob'
import Export2Excel from './utils/Export2Excel.js'
html:
导出
js:
注: 当前表格为复选表格,所以对复选进行了相应判断
//引入 注意Export2Excel路径
import { export_json_to_excel } from '../../../utils/Export2Excel';
import dateUtil from '../../../utils/dateUtil'
// 导出
exportExcel() {
const tHeader = ["竞赛名称", "竞赛开始时间","竞赛结束时间","得分","排名","获得奖项","指导老师","指导老师获得奖项"]; //对应表格输出的title
const filterVal = ["rname", "starttime","endtime","mark","type","sprizename","teacher","tprizename"]; // 对应表格输出的数据
let that = this;
this.$confirm('确定要导出吗?', '提示', {
type: 'warning'
}).then(() => {
// console.log(this.multipleSelection,'---');
// 如果选择数据为空 发送请求 取全部数据
if(this.multipleSelection == undefined || this.multipleSelection == '') {
//total为后端返回数据总条数,直接赋值给当前页面请求条数即可
this.form.pagesize = this.pageTotal
//this.query为请求需要携带的参数
this.query = this.form
//schoollist为封装后的请求
schoollist(this.query).then(res => {
that.exportData = res.retData.data;
//为循环数据添加一个序号 导出后方便查看
for(let i in that.exportData){
that.exportData[i].type = parseInt(i)+1
}
const data = that.formatJson(filterVal, that.exportData);
export_json_to_excel(tHeader, data, '人员历史参赛' + dateUtil.gettime() + '系统导出');//最后一个是表名字
//请求完成后将页码归为正常请求值
that.form.pagesize = 10
});
}else {
//如果此时复选框有数据,直接导出选中数据即可
this.exportData = this.multipleSelection
const data = that.formatJson(filterVal, this.exportData);
export_json_to_excel(tHeader, data, '人员历史参赛' + dateUtil.gettime() + '系统导出');//最后一个是表名字
//导出完成后,清除复选框数据
this.$refs.table.clearSelection()
this.multipleSelection = []
}
// console.log('导出数据',this.exportData);
}).catch(()=>{})
},
formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => v[j]))
},
思路: 和普通导出一样 只不过是将请求分批次发送, 再服务器可接收的范围内即可
由于等待时间过长,需要加入loading图,此时可以将loading进行封装,方便其他页面使用
可以将其放到公用的文件夹中
正在导出中,请稍后
//html
//js
import Loading from '../../common/loading.vue' //loading图
export default {
components:{
Loading,
},
data() {
return {
loading:false,
}
}
}
重复之前步骤
引入需要的插件
//html:
导出
//js:
import { export_json_to_excel } from '../../../utils/Export2Excel';
import dateUtil from '../../../utils/dateUtil'
//事件 前提同样是复选表格 所以进行判断
//判断默认全部导出还是选择后部分导出
exportdownload() {
let that = this;
this.$confirm('确定要导出吗?', '提示', {
type: 'warning'
}).then(() => {
//未选择数据 默认导出全部
if(this.multipleSelection.length == 0) {
this.form.pagenum = 0
//数据处理
this.handleDa