Angular实现生成excel文件(不同sheet页的文件)

一 需求背景

      后台不愿意生成excel,成功的甩到了web(有木有大神知道像导出生成文件的功能是放在服务端做好,还是放到客户端做好呢?求指导啊!!!),于是百度到了web侧生成excel文件,亲测,好用。。

二 核心插件

     【1】npm install xlsx --save

              详情见:https://www.npmjs.com/package/xlsx

     【2】npm install file-saver --save   

              详情见:https://www.npmjs.com/package/file-saver

注意:如果下载失败,使用cnpm下载

三 代码

【1】创建一个导出按钮,用于出发导出函数

<button (click)="exportFile()">导出</button>

【2】使用插件,生成excel文件

/....../

exportFile(){
//生成excel表的数据是[{},...{}]形式,每个对象代表一行,key值代表列名
    let json = [
        {"A列": "***1","B列": "***2", "C列": "***3"},
        {"A列": "***a","B列": "***b", "C列": "***c"}
    ];
    const worksheet1: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);
    const worksheet2:XLSX.WorkSheet = XLSX.utils.json_to_sheet(json)
    const workbook: XLSX.WorkBook = { 
      Sheets: { '1': worksheet1,"2":worksheet2},
      SheetNames: ['1','2']
    };
    const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
    //这里类型如果不正确,下载出来的可能是类似xml文件的东西或者是类似二进制的东西等
    this.saveAsExcelFile(excelBuffer, "模板");
  }

  private saveAsExcelFile(buffer: any, fileName: string) {
    //转成二进制流 这一步很重要
    const data: Blob = new Blob([buffer], {
      type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'
    });
    FileSaver.saveAs(data, fileName + '_export_' + new Date().getTime() + '.xls');
  }


/....../

四 导出结果

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值