Vue+Element表格通过前端导出为Excel文件


在做一个带出Excel功能,本来想的是后端导出,但是表格格式比较复杂,涉及到合并现实这些操作 需要跟前端保持一致,所以就在网上找了下前端导出的插件。
以下做个记录
注:此方法能够导出多级表格,默认已安装ElementUI。
1。安装xlsx库
npm install xlsx
2。编写保存函数,文件位置:src/utils/htmlToExcel.js

import XLSX from 'xlsx';

const htmlToExcel = {
  getExcel(dom, title = 'temp'){
    var excelTitle = title;
    var wb = XLSX.utils.table_to_book(document.querySelector(dom));
    try {
      XLSX.writeFile(wb, excelTitle + '.xlsx');
    } catch (e) {
      if (typeof console !== 'undefined') {
        console.log(e);
        alert('导出失败!');
        // console.log(e, wbout);
      }
    }
    // return wbout;
  },
};

export default htmlToExcel;

3.使用函数,文件位置src/views/TablePage.vue

注:表格导出实现解释,给展示表格添加选择功能,通过handleSelectionChange函数将选中数据与selectData绑定,在选中需要导出数据后点击导出按钮,展示el-dialog并将selectData数据展示在el-dialog中的表格,此表格为最后导出的表格,所以id赋值selectTable,最后确认打印调用exportExcel函数,通过htmlToExcel.getExcel('#selectTable','导出的自定义标题')导出Excel文件。







因为这个是按照element ui里的表格导出,所以如果要过滤不必要的字段,可以再加一层数据筛选,然后导出筛选过后的表格

参考1:https://juejin.cn/post/6914824008043069448
参考2:https://github.com/rockboom/SheetJS-docs-zh-CN

vue