导出xlsx

该博客主要介绍了如何使用JavaScript库XLSX进行Excel文件的生成和数据添加。通过`table_to_book`函数将HTML表格转换为工作簿对象,然后使用`write`方法生成二进制字符串,并结合FileSaver库保存为.xlsx文件。同时,展示了如何根据选择的数据动态生成Excel,包括设置默认单元格样式和隐藏网格线。
摘要由CSDN通过智能技术生成

 安装引入

import FileSaver from 'file-saver';
import XLSX from 'xlsx';
    exportFunc(e) {
      // 从表生成工作簿对象
      const wb = XLSX.utils.table_to_book(document.getElementById('out-table'));
      // 得到二进制字符串作为输出
      const wbout = XLSX.write(wb, {
        bookType: 'xlsx',
        type: 'binary',
      });
      FileSaver.saveAs(new Blob([this.s2ab(wbout)], {
        type: 'application/octet-stream',
      }), 'a.xlsx');
       console.log("列表d阿初",wb)
    },
    s2ab(s) {
     
      let cuf;
      let i;
      if (typeof ArrayBuffer !== 'undefined') {
        cuf = new ArrayBuffer(s.length);
        const view = new Uint8Array(cuf);
        for (i = 0; i !== s.length; i++) {
          view[i] = s.charCodeAt(i) & 0xFF;
        }
        return cuf;
      }
      cuf = new Array(s.length);
      for (i = 0; i !== s.length; ++i) {
        cuf[i] = s.charCodeAt(i) & oxFF;
      }
     
      return cuf;
    },

添加数据

 exportFunc(row){
                  console.log("执行",this.selectedState.length)
      console.log(row);
      console.log(this.varData)
                 const defaultCellStyle =  { font: { name: "Verdana", sz: 11, color: "FF00FF88"}, fill: {fgColor: {rgb: "FFFFAA00"}}};
                 const wopts = { bookType:'xlsx', bookSST:false, type:'binary', defaultCellStyle: defaultCellStyle, showGridLines: false};
                 const wb = { SheetNames: ['Sheet1'], Sheets: {}, Props: {} };
                 let data= ''; //存放要导出的数据 可能是数组  let data[]  
                 if(this.selectedState.length ==0){
                    data = this.varData
                    console.log("dd",data)
                 }
                 if(this.selectedState.length != 0){
                   data = this.selectedState
                    console.log("ddw",data)
                 }
                wb.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(data)
                
                //创建二进制对象写入转换好的字节流
               let tmpDown =  new Blob([this.s2abc(XLSX.write(wb, wopts))], { type: "application/octet-stream" })
               FileSaver.saveAs(tmpDown, "表格.xls");
             },
             //字符串转字符流
s2abc (s) {
                if (typeof ArrayBuffer !== 'undefined') {  
                    var buf = new ArrayBuffer(s.length);  
                    var view = new Uint8Array(buf);  
                    for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;  
                    return buf;  
                } else {  
                    var buf = new Array(s.length);  
                    for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;  
                    return buf;  
                }},

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值