vue中使用XLSX导出excle

一、下载依赖包

npm i xlsx --save

npm i file-saver --save

二、在需要导出excel的组件导入xlsx、file-saver

import XLSX from 'xlsx'
import FileSaver from 'file-saver'

三、html部分

<button @click="exportExcel">下载</button>

四、js部分

exportExcel() {
      
      let wopts = {
        bookType: 'xlsx',
        bookSST: true,
        type: 'binary'
      };
      let workBook = {
        SheetNames: ['Sheet1'],
        Sheets: {},
        Props: {}
      };
      let table = [
        {
          ID: '001',
          name: '零零一',
          age: 17,
          from: '中国四川'
        },
        {
          ID: '002',
          name: '零零二',
          age: 17,
          from: '中国北京'
        },
        {
          ID: '003',
          name: '零零三',
          age: 17,
          from: '中国上海'
        },
        {
          ID: '004',
          name: '零零四',
          age: 17,
          from: '中国武汉'
        },
        {
          ID: '005',
          name: '零零五',
          age: 17,
          from: '中国湖南'
        }
        ]

      //1、XLSX.utils.json_to_sheet(data) 接收一个对象数组并返回一个基于对象关键字自动生成的“标题”的工作表,默认的列顺序由使用Object.keys的字段的第一次出现确定
      //2、将数据放入对象workBook的Sheets中等待输出
      workBook.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(table);

      //3、XLSX.write() 开始编写Excel表格
      //4、changeData() 将数据处理成需要输出的格式
      FileSaver.saveAs(new Blob([this.changeData(XLSX.write(workBook, wopts))], {type: 'application/octet-stream'}), new Date().getTime() + ".xlsx")
    },
changeData(s) {
      //如果存在ArrayBuffer对象(es6) 最好采用该对象
      if (typeof ArrayBuffer !== 'undefined') {
        //1、创建一个字节长度为s.length的内存区域
        let buf = new ArrayBuffer(s.length);
        //2、创建一个指向buf的Unit8视图,开始于字节0,直到缓冲区的末尾
        let view = new Uint8Array(buf);
        //3、返回指定位置的字符的Unicode编码
        for (let i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
        return buf;
      } else {
        let buf = new Array(s.length);
        for (let i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
        return buf;
      }
    }

vue+elementui table导出excel

exportExcel() {
        let xlsxParam = {raw: true}; //转换成excel时,使用原始的格式
        / generate workbook object from table /
        /* 从表生成工作簿对象 */
        let wb = XLSX.utils.table_to_book(
          document.querySelector("#tableName"),  //elementui 表格的id
          xlsxParam
        );

        /* 获取二进制字符串作为输出 */
        let wbout = XLSX.write(wb, {
          bookType: "xlsx",
          bookSST: true,
          type: "array"
        });
        try {
          FileSaver.saveAs(
            //Blob 对象表示一个不可变、原始数据的类文件对象。
            //Blob 表示的不一定是JavaScript原生格式的数据。
            //File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
            //返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
            new Blob([wbout], {type: "application/octet-stream"}),
            //设置导出文件名称
            new Date().getTime() + ".xlsx"
          );
        } catch (e) {
          if (typeof console !== "undefined") console.log(e, wbout);
        }
        return wbout;
      },

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在Vue使用xlsx导出Excel文件,需要进行以下步骤: 1. 首先,在使用的页面导入xlsxxlsx-style库。可以使用以下代码导入: ``` import XLSX from 'xlsx'; import XLSX2 from 'xlsx-style'; ``` 引用 2. 找到`./node_modules/xlsx-style/dist/cpexcel.js`文件,并手动修改其的代码。将`var cpt = require('./cpt' 'able');`替换为`var cpt = cptable;`。这样做是为了解决Vue xlsx导出表格时间不全的问题。引用 3. 进行基本设置,并调用相应的函数来导出Excel文件。可以使用以下代码作为基础设置: ``` var data = this.addRangeBorder(wb['!merges'], wb); // 合并项添加边框 var filedata = this.sheet2blob(data); // 将一个sheet转成最终的excel文件的blob对象 this.openDownloadDialog(filedata, '报表名字.xlsx'); // 下载报表 ``` 引用 通过以上步骤,你就可以在Vue使用xlsx库来导出Excel文件了。记得根据自己的需求进行相应的调整和修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue框架使用xlsx导出excel表格](https://blog.csdn.net/qq_46372045/article/details/126779345)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值