• 使用vue导出excel遇到的那些坑(开头数字为0会被忽略掉,订单号或者银行卡号过长会被转换成科学计数)


    需求:

    Vue+element UI el-table下的导出当前所有数据到一个excel文件里。

    先按照网上的方法,看看有哪些坑

    准备工作:

    1、安装依赖:yarn add xlsx file-saver -S

    2、在放置需要导出功能的组件中引入
      

    import FileSaver from "file-saver";
    import XLSX from "xlsx";

    3、HTML中的设置,简单来说就是给需要导出的table标签el-table上加一个id:如outTable,对应下面的exportExcel方法中的 document.querySelector(‘#outTable‘)

       //导出当前表格
    exportCurrent:function(){
        var wb = XLSX.utils.table_to_book(document.querySelector('#outTable')) //表格id
        var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
        try {
            FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'sheet.xlsx')  //文件名
        } catch (e) { if (typeof console !== 'undefined') console.log(e, wbout) }
        return wbout
    },

    我们来看一下原始数据


    接下来再来看一下导出的结果


    哎???我订单编号跟银行卡号咋成了科学计数法了??

    还有我的时间,时分秒呢??

    原因是因为数字太长了,需要使用excel的文本格式才能显示正常

    经过各种搜索,最终解决方法如下:

    exportExcel() {
          var xlsxParam = { raw: true };//转换成excel时,使用原始的格式
          var wb = XLSX.utils.table_to_book(document.querySelector("#outTable"),xlsxParam);
          var wbout = XLSX.write(wb, {
            bookType: "xlsx",
            bookSST: true,
            type: "array"
          });
          try {
            FileSaver.saveAs(
              new Blob([wbout], { type: "application/octet-stream;charset=utf-8" }),
              "sheetjs.xlsx"
            );
          } catch (e) {
            if (typeof console !== "undefined") console.log(e, wbout);
          }
          return wbout;
        },

    再来看我们的数据


    大功告成

  • 相关阅读:
    oldboy_09_03day_test1
    oldboy_09_03day
    java消息队列
    es6语法([...arr], set/map数据结构,数组扩展,箭头函数等)
    Angular 2 Expression Changed After It Has Been Checked Exception
    jQuery之Deferred对象详解
    js面向对象:Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
    Angular 4.x 动态创建组件
    JS中this的四种用法
    typescript主键自增长
  • 原文地址:https://www.cnblogs.com/zhangyezi/p/13569862.html
Copyright © 2020-2023  润新知