最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
vue使用file-saver本地文件导出功能代码示例
时间:2022-06-29 01:58:40 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下vue使用file-saver本地文件导出功能代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
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 0 || tableList[key].querySelectorAll('.el-button').length > 0) {
tableList[key].remove();
}
}
return tableHeader;
}
4:使用方式
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));
}
相关文章
- 过山车之星2游戏联机方法攻略分享 11-02
- 过山车之星2豪华版与标准版内容一览 11-02
- 龙腾世纪4影障守护者守望者宝库内容说明 11-02
- 龙腾世纪4影障守护者第三个盾牌谜题攻略 11-02
- 龙腾世纪4影障守护者第二个盾牌谜题攻略 11-02
- 龙腾世纪4影障守护者第一个盾牌谜题攻略 11-02