vue使用file-saver本地文件导出功能
作者:前端辣白菜 时间:2023-07-02 16:59:26
1:安装xlsx和file-saver
npm install file-saver xlsx --save
2:创建localExports.js文件
3:直接上代码
import XLSX from 'xlsx';
const FileSaver = require('file-saver');
import { getRandomNum } from '@/utils';
// 本地导出表格
/**
* 导出Excel文件
* @param {*} elementName table组件id名称
* @param {*} fileName 文件名
* @description 使用说明
* import { exportsXlsx } from '@/utils/localExports';
* exportsXlsx('idName', '文件名称');
*/
export function exportsXlsx(elementName, fileName) {
const time = new Date().getTime();
const random = getRandomNum(100, 1000);
const wb = XLSX.utils.table_to_book(clearHead(elementName), { raw: true });
const wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' });
FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), `${fileName}${time}-${random}.xlsx`);
}
function clearHead(elementName) {
const tableDom = document.querySelector('#' + elementName).cloneNode(true);
const tableHeader = tableDom.querySelector('.el-table__header-wrapper');
const tableBody = tableDom.querySelector('.el-table__body');
tableHeader.childNodes[0].append(tableBody.childNodes[1]);
const headerDom = tableHeader.childNodes[0].querySelectorAll('th');
// 移除左侧checkbox的节点
if (headerDom[0].querySelectorAll('.el-checkbox')) {
headerDom[0].remove();
}
for (const key in headerDom) {
if (headerDom[key].innerText === '操作') {
headerDom[key].remove();
}
}
// 清理掉checkbox 和操作的button
const tableList = tableHeader.childNodes[0].childNodes[2].querySelectorAll('td');
for (let key = 0; key < tableList.length; key++) {
if (tableList[key].querySelectorAll('.el-checkbox').length > 0 || tableList[key].querySelectorAll('.el-button').length > 0) {
tableList[key].remove();
}
}
return tableHeader;
}
4:使用方式
<el-table
id="good"
v-loading="listLoading"
:header-cell-style="{ background: '#FAFAFA', color: '#212532' }"
:data="list"
tooltip-effect="dark"
style="width: 100%"
height="566"
border
@selection-change="handleSelectionChange"
>
import { exportsXlsx } from '@/utils/localExports';
methods:{
onSearch() {
exportsXlsx('good', '模拟数据');
},
}
5:good为table组件的id,getRamdomNum方法如下
// 生成随机数
export function getRandomNum(Min, Max) {
var Range = Max - Min;
var Rand = Math.random();
return (Min + Math.round(Rand * Range));
}
来源:https://blog.csdn.net/weixin_42484657/article/details/122321802
标签:vue,file-saver,文件,导出
0
投稿
猜你喜欢
如何利用 Python 绘制动态可视化图表
2022-11-23 17:14:37
golang1.16新特性速览(推荐)
2023-07-06 10:34:47
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2023-03-07 19:39:32
vue parseHTML源码解析hars end comment钩子函数
2024-06-05 15:29:14
如何高效使用Python字典的方法详解
2021-07-26 04:29:03
asp如何做一个专门显示文本文件的页面?
2010-07-12 19:04:00
深入了解SQL Server 2008 商业智能平台
2009-01-15 13:03:00
Python正则表达式匹配ip地址实例
2023-06-13 15:06:12
python数据库编程 ODBC方式实现通讯录
2024-01-15 10:58:01
在JavaScript中获取请求的URL参数
2024-04-25 13:08:43
layabox2.0命令行在vscode中编译打包问题
2022-08-27 02:23:20
python机器学习之神经网络
2023-11-10 21:39:19
Python用SSH连接到网络设备
2022-01-20 08:57:41
PHP中动态显示签名和ip原理
2024-05-11 10:12:33
Linux下MySQL多实例部署及安装指南
2024-01-21 10:49:28
Python利用FlashText算法实现替换字符串
2023-05-17 06:18:11
:hover在IE6下的问题
2009-06-18 21:09:00
JS 设计模式之:单例模式定义与实现方法浅析
2024-04-29 14:10:04
python 中的 asyncio 异步协程
2022-09-15 12:30:53
tensorflow中的数据类型dtype用法说明
2023-08-28 05:44:30