vue、filesaver.js、xlsx.js 一键导出表格、导出Excel功能! 插件完整免费版、开箱即用

vue2.0项目结合elm-ui封装的导出当前表格功能

当前环境: vue2.0、elm-ui【对应2版本】、filesaver.js【最新版本】、xlsx.js 【^0.16.0】 xlsx我安装的时候最新版本有问题我安装的是0.16的!

安装插件

npm install file-saver --save

npm install xlsx

//以elm为例:
在 table  添加 id='outTable'

<el-table  id="outTable">

exportform.js //封装的导出功能

import {
	Message
} from 'element-ui';
import FileSaver from "file-saver";
import XLSX from "xlsx";

const exportform = {
	/*
	  bind 钩子函数,第一次绑定时调用,可以在这里做初始化设置
	  el: 作用的 dom 对象
	  value: 传给指令的值,
	*/
	bind(el, {
		value
	}) {
		el.$value = value; // 用一个全局属性来存传进来的值,因为这个值在别的钩子函数里还会用到
		el.handler = () => {
			if (!el.$value) {
				// 值为空的时候,给出提示,我这里的提示是用的 ant-design-vue 的提示,你们随意
				Message({
					message: '无文件名!',
					type: 'warning',
					customClass: 'zZindex'
				});
				return;
			}
			var workbook = XLSX.utils.table_to_book(document.querySelector("#outTable")); //把DOM TABLE元素转换为工作簿对象
			var worksheet = workbook.Sheets[workbook.SheetNames[0]]; //返回一个表示工作表的对象。
			var wopts = { bookType:'xlsx', bookSST:false, type:'array' };
			var wbout = XLSX.write(workbook,wopts);
			try {
				FileSaver.saveAs(
					new Blob([wbout], {
						type: "application/octet-stream",
					}),
					el.$value + ".xlsx"
				);
			} catch (e) {
				if (typeof console !== "undefined") console.log(e, workbook);
			}
		};
		// 绑定点击事件,就是所谓的一键 copy 啦
		el.addEventListener('click', el.handler);
	},
	// 当传进来的值更新的时候触发
	componentUpdated(el, {
		value
	}) {
		el.$value = value;
	},
	// 指令与元素解绑的时候,移除事件绑定
	unbind(el) {
		el.removeEventListener('click', el.handler);
	},
};

export default exportform

directives.js //赋值内置指令

import exportform from './exportform.js';
// 自定义指令
const directives = {
  exportform
};

export default {
	install(Vue){
		//处理多个指令用法 
		Object.keys(directives).forEach((key)=>{
			Vue.directive(key,directives[key]);
		})
	}
}

main.js

import Directives from './directives';    //引入下就好

使用!!!!!

	<button v-exportform="'我是导出的文件名'">点击导出</button>

end----

在这里插入图片描述
自己的技术这几年都没啥突破 、、害 压力好大!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值