前端导出excel,yarn add exceljs

Posted Jay_帅小伙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端导出excel,yarn add exceljs相关的知识,希望对你有一定的参考价值。

import Excel from 'exceljs';
async export(fileName, title, columns, data, fileType = 'xlsx') 
    const workbook = new Excel.Workbook();
    const sheet = workbook.addWorksheet(title);
    const keyValueData = ;
    sheet.columns = columns.map(item => 
      keyValueData[item.key] = item;
      return 
        header: item.title,
        key: item.key,
        width: item.width || 100
      ;
    );
    const rows = [];
    data.forEach(item => 
      const obj = ;
      for (const key in item) 
        if (keyValueData[key]) 
          const value = keyValueData[key].value ? keyValueData[key].value(item, item[key]) : item[key];
          obj[key] = value;
        
      
      rows.push(obj);
    );
    sheet.addRows(rows);
    const res = await workbook[fileType].writeBuffer();
    // util.blobToFile(fileName, res, fileType === 'csv'); // 如果导出乱码, 请改这里, 导出的head设置问题
    this.blobToFile(fileName, res, fileType === 'csv'); // 如果导出乱码, 请改这里, 导出的head设置问题
  ,
 
    /**
   * blob下载文件
   * @param fileName
   * @param blob
   */
  blobToFile(fileName, b, isUtf8) 
    if (isUtf8 === true) 
      b = '\\uFEFF' + b;
    

    const blob = new Blob([b]);
    if ('download' in document.createElement('a'))  // 非IE下载
      const elink = document.createElement('a');
      elink.download = fileName;
      elink.style.display = 'none';

      if (isUtf8 === true) 
        elink.href = URL.createObjectURL(blob,  type: 'text/csv;charset=utf-8' );
       else 
        elink.href = URL.createObjectURL(blob);
      

      document.body.appendChild(elink);
      elink.click();
      URL.revokeObjectURL(elink.href); // 释放URL 对象
      document.body.removeChild(elink);
     else  // IE10+下载
      navigator.msSaveBlob(blob, fileName);
    
  ,

以上是关于前端导出excel,yarn add exceljs的主要内容,如果未能解决你的问题,请参考以下文章

使用 excelJs 插件导出 excel(原生js)?

eggjs中使用exceljs直接导出excel文件

java代码导出数据到Exceljs导出数据到Excel

这一定是前端Excel导出的天花板~

vue 下使用 exceljs + x-spreadsheet 带样式导出Excel

vue 下使用 exceljs + x-spreadsheet 带样式导出Excel