vue使用file-saver本地文件导出功能
作者:前端辣白菜 发布时间:2023-07-02 16:59:26
标签: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 < 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


猜你喜欢
- 1.自定义聚合函数,结合agg使用2. 同时使用多个聚合函数3. 指定某一列使用某些聚合函数4.merge与transform使用impor
- 本文实例讲述了JS实现字符串转驼峰格式的方法。分享给大家供大家参考,具体如下:实现效果如:border-bottom-color =>
- 一般来说,我们判断 iframe 是否加载完成其实与 判断 JavaScript 文件是否加载完成 采用的方法很类似:var&nb
- 第一步:下载mysql镜像镜像docker pull mysql默认是下载最新稳定版第二步:启动mysql镜像docker run --na
- Turtle库是Python语言中一个很流行的绘制图像的函数库,利用这个库会生成一个画布,在画布中有我们看不见的一个默认以中心点为原点的坐标
- 本文实例讲述了Python中统计函数运行耗时的方法。分享给大家供大家参考。具体实现方法如下:import timedef time_me(f
- 虚拟环境的创建命令行窗口中使用conda create -n 环境名 python=所需python版本即可创建虚拟环境pytorch的gp
- 一、安装相关的模块首先第一步的话我们需要安装相关的模块,通过pip命令来安装pip install gif另外由于gif模块之后会被当做是装
- 最近在D4得到一本(美) Penny Mcintire写的《Visual Design for the Modern Web》.突然觉得可用
- Django视图函数执行,不在主线程中,直接loop = asyncio.new_event_loop() # 不能loop = async
- UI排版布局主页通过分页栏来划分不同的界面,以及窗体最小化,最大化,关闭功能。应用、网页直达页由简单的按钮组成,前后对正、左右标齐。天气查询
- 先安装第三方库:pip install requestsdef isConnected(): import requ
- 如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子:$unsafe_variable = $_
- 概述我在教学和实际设计中的一些心得。就不长篇大论了!让大家省些时间,捞干的。尽量通俗易懂。想知道怎样设计标志,就要知道什么是标志?标志:外来
- 前言众所周知在java或php等很多面向对象的语言中, 异常处理是依靠throw、catch来进行的。在go语言中,panic和recove
- <?php/*定义和用法strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果
- NopCommerce为了实现松耦合的框架设计目的,使用了IOC框架:Autofac。据有人测试,Autofac是性能很好的IOC工具。1、
- 最近项目中需要Python的打包,看到网上也没有很详细的资料,于是做了一些示例程序。研究了一下,Python如何在Windows和Linux
- 本文实例讲述了Python编码类型转换方法。分享给大家供大家参考,具体如下:1:Python和unicode为了正确处理多语言文本,Pyth
- 这几年比较火的一个漏洞就是jinjia2之类的模板引擎的注入,通过注入模板引擎的一些特定的指令格式,比如 {{1+1}} 而返回了 2 得知