vue使用file-saver本地文件导出功能

 更新时间:2022年01月07日 15:36:37   作者:前端辣白菜  
这篇文章主要介绍了vue使用file-saver本地文件导出,大家需要安装xlsx和file-saver,然后创建localExports.js文件,具体实现代码跟随小编一起看看吧

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));
}

到此这篇关于vue使用file-saver本地文件导出的文章就介绍到这了,更多相关vue file-saver本地文件导出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue-baidu-map实现区域圈线和路径的渐变色

    vue-baidu-map实现区域圈线和路径的渐变色

    这篇文章主要介绍了vue-baidu-map实现区域圈线和路径的渐变色方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Vue中transition单个节点过渡与transition-group列表过渡全过程

    Vue中transition单个节点过渡与transition-group列表过渡全过程

    这篇文章主要介绍了Vue中transition单个节点过渡与transition-group列表过渡全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置

    Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置

    这篇文章主要介绍了Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • vue+element-ui JYAdmin后台管理系统模板解析

    vue+element-ui JYAdmin后台管理系统模板解析

    这篇文章主要介绍了vue+element-ui JYAdmin后台管理系统模板解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Vue中rem与postcss-pxtorem的应用详解

    Vue中rem与postcss-pxtorem的应用详解

    这篇文章主要介绍了Vue中rem与postcss-pxtorem的应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 教你使用vue3写Json-Preview的示例代码

    教你使用vue3写Json-Preview的示例代码

    这篇文章主要介绍了用vue3写了一个Json-Preview的相关知识,引入后直接<json-preview v-model="jsonData"></json-preview>就可以使用了,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • vue自定义表格列的实现过程记录

    vue自定义表格列的实现过程记录

    这篇文章主要给大家介绍了关于vue自定义表格列的相关资料,表格组件在开发中经常会用到,文章通过示例代码介绍的也很详细,需要的朋友可以参考下
    2021-06-06
  • Vue中props用法介绍

    Vue中props用法介绍

    这篇文章主要给大家分享的是 Vue中props用法介绍,​ 在Vue中通过props,可以将原本孤立的组件串联起来,也就是可以子组件可以接收父组件传递过来的data,下面我们一起进入文章看看内容的详细介绍吧,需要的朋友也可以参考一下
    2021-11-11
  • vue实现微信公众号h5跳转小程序的示例代码

    vue实现微信公众号h5跳转小程序的示例代码

    本文主要介绍了vue实现微信公众号h5跳转小程序的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • vue中实现子组件相互切换且数据不丢失的策略详解

    vue中实现子组件相互切换且数据不丢失的策略详解

    项目为数据报表,但是一个父页面中有很多的子页面,而且子页面中不是相互关联,但是数据又有联系,所以本文给大家介绍了vue中如何实现子组件相互切换,而且数据不会丢失,并有详细的代码供大家参考,需要的朋友可以参考下
    2024-03-03

最新评论