前端js实现导出大量数据的excel文件

241 阅读1分钟

数据转excel方法:

   exportExcel2(initColumns, initList, name){
      let str = '';
      let arr = [];
      let keyArr = [];
      initColumns.forEach((item) => {
        arr.push(item['title']);
        keyArr.push(item['data']);
      });
      str = arr.join(',') + '\n';

      for (let i = 0; i < initList.length; i++) {
        let subArr = keyArr.map((item) => {
          let temp = initList[i][item] === undefined ? '' : initList[i][item] + ''; // 转成字符串
          // 下面解决中文乱码问题 会把空格转成 #, 这里把空格转成 \xa0 就不会有这个问题了
          return temp ? temp.replaceAll(/\s+/g, '\xa0') : '';
        });
        let subStr = subArr.join('\t,');
        subStr += '\n';
        str += subStr;
      }
      // \ufeff 解决中文乱码问题
      var blob = new Blob(['\ufeff', str], { type: 'text/plain' });
      let object_url = window.URL.createObjectURL(blob);
      let link = document.createElement('a');
      link.href = object_url;
      link.download = `${name}.csv`;
      document.body.appendChild(link);
      link.click();
      document.body.removeChild(link);
    },

使用:

const initalColumns = [
  {
      title: '名字',
      dataIndex: 'name',
      key: 'name',
    },
   
      title: '年龄',
      dataIndex: 'age',
      key: 'age',
    },
 ]
 const initList = [
    {
      name: '张三',
      age: 18,
    },
    {
      name: '李四',
      age: 20,
    },
  ];
 exportExcel2(initalColumns, initList, '统计表格')