前端页面直接导出Excel方案

方案1

纯原生js在页面实现 导出 .xls格式


    toContentPrintExcel22(e) {
      // 获取页面内容
      this.name = this.$t(this.selectReport.name);

      // 打印内容部分-区分类型,利润和其他
      let tableHtml = document.querySelectorAll('#excelContent table')[0].innerHTML;
    
      // 创建a标签
      const linkNode = document.createElement('a');
      linkNode.download = this.name;
      linkNode.style.display = 'none';

      // 利用Blob对象将字符内容转变成二进制数据
      const exportHtml = `<!DOCTYPE html>
                    <html lang="en">
                    <head>
                    <meta charset="UTF-8">
                    <title>Title</title>
                    <style>
                      font-family: 宋体;
                      table{
                          text-align:center;
                      }
                    </style>
                    </head>
                    <body>
                    <table>
                    <tr><td>${tableHtml}</td></tr>
                    </table>
                    <div>&nbsp;&nbsp;</div>
                    </body>
                </html>`;
      const blob = new Blob([exportHtml], { type: 'application/vnd.ms-excel' });
      linkNode.href = URL.createObjectURL(blob);
      // 点击
      document.body.appendChild(linkNode);
      linkNode.click();
      // 移除
      document.body.removeChild(linkNode);
    },

方案2(推荐,xlsx格式兼容office)

安装vue组件 xlsx

1. 环境 

npm install xlsx

2. 模块中引入

import * as XLSX from 'xlsx';

3. 代码调用

exportExcel(filename) {
      const xlsxParam = { raw: true }; // 导出的内容只做解析,不进行格式转换

// excelContent,table外层的id名
      const workbook = XLSX.utils.table_to_book(document.getElementById('excelContent'), xlsxParam);
      
      // 自带的快捷写法 XLSX.writeFile
      XLSX.writeFile(workbook, filename + '.xlsx');
    },

方案3

安装vue组件 xlsx, file-saver

1. 环境 

npm install xlsx

npm install file-saver

2. 模块中引入

import * as XLSX from 'xlsx';

import FileSaver from 'file-saver';

3. 代码调用

  exportExcel(filename) {
      const xlsxParam = { raw: true }; // 导出的内容只做解析,不进行格式转换
      const workbook = XLSX.utils.table_to_book(document.getElementById('excelContent'), xlsxParam);

      /* 获取二进制字符进行输出 */
      // 使用组件FileSaver的写法
      const wbOut = XLSX.write(wb, {
        bookType: 'xlsx',
        bookSST: true,
        type: 'array'
      });
      try {
        FileSaver.saveAs(
          new Blob([wbOut], { type: 'application/octet-stream' }),
          filename + '.xlsx'
        );
      } catch (e) {
        if (typeof console !== 'undefined') {
          console.log(e, wbOut);
        }
      }
      return wbOut;

    },

拓展: 多张 sheet 导出

   exportMultiExcel(filename) {
      const xlsxParam = { raw: true };
      // 转换成excel时,使用原始的格式,这样导出的时候数字过长不会变成科学计数法
      const workbook = XLSX.utils.book_new();

      // 这里开始添加多个sheet页 - 用于报表-销售-利润页面
      const ws1 = XLSX.utils.table_to_sheet(document.querySelector('#revenue1'), xlsxParam);
      XLSX.utils.book_append_sheet(workbook, ws1, 'sheet1');
      const ws2 = XLSX.utils.table_to_sheet(document.querySelector('#revenue2'), xlsxParam);
      XLSX.utils.book_append_sheet(workbook, ws2, 'sheet2');
      const ws3 = XLSX.utils.table_to_sheet(document.querySelector('#revenue3'), xlsxParam);
      XLSX.utils.book_append_sheet(workbook, ws3, 'sheet3');

      XLSX.writeFile(workbook, filename + '.xlsx');
    }

相关推荐

  1. 前端页面直接导出Excel方案

    2024-01-25 07:52:04       38 阅读
  2. 前端导出Excel

    2024-01-25 07:52:04       20 阅读
  3. 前端模块导入导出方式

    2024-01-25 07:52:04       6 阅读
  4. vue:功能【xlsx】纯前端导出Excel

    2024-01-25 07:52:04       21 阅读
  5. 前端VUE导出excel多sheet,适用单多导出

    2024-01-25 07:52:04       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-25 07:52:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-25 07:52:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-25 07:52:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-25 07:52:04       18 阅读

热门阅读

  1. arm 汇编调用C

    2024-01-25 07:52:04       31 阅读
  2. ssh: connect to host github.com port 22: Connection timed out

    2024-01-25 07:52:04       31 阅读
  3. hadoop 三种运行方式

    2024-01-25 07:52:04       31 阅读
  4. centos下安装mongo C & C++ 驱动

    2024-01-25 07:52:04       38 阅读
  5. MATLAB Fundamentals>>>Fill Missing Values

    2024-01-25 07:52:04       36 阅读
  6. 常用的gpt-4 prompt words收集6

    2024-01-25 07:52:04       27 阅读
  7. 嵌入式Linux:如何进行嵌入式Linux开发?

    2024-01-25 07:52:04       31 阅读
  8. ORACLE数据导出工具

    2024-01-25 07:52:04       32 阅读
  9. TestNG @AfterClass 注解

    2024-01-25 07:52:04       30 阅读