列表数据导出成Excel

1、下载xlsx库

npm i xlsx --save

2、项目中引入xlsx库文件

import * as XLSX from ‘xlsx’;

3、定义导出方法

  handleDownload=(dataSource) => {
    // dataSource为需要导出的数据
    
   //  tableColumn为table的表头列
    const tableColumn=[     
    	{title:"列1",dataIndex:'col1',value:1},
    	{title:"列2",dataIndex:'col2',value:2},
    	{title:"列3",dataIndex:'col3',value:3},
    	{title:"列4",dataIndex:'col4',value:4}
    ]
    
    // 自定义下载的header,注意是数组中的数组哦
    const exportCols = tableColumn.filter((item) => !item._ignore);
    const Header = [exportCols.map((item) => item.title)];
    
    //以下是处理导出数据的内容(将datasource中多余的内容去掉,和header的字段要一一对应上)
    const exportArr = dataSource.map((item) => {
      const obj = {};   //定义一个空对象接收处理后的数据
      exportCols.forEach((col) => {
        let value = item[col.dataIndex];
        obj[col.dataIndex] = value;
      });
      return obj;
    });

    // 官方文档中的描述:converts an array of arrays of JS data to a worksheet.
    const headerWs = XLSX.utils.aoa_to_sheet(Header);
    const ws = XLSX.utils.sheet_add_json(headerWs, exportArr, { skipHeader: true, origin: 'A2' });

    /* 新建空workbook,然后加入worksheet */
    const wb = XLSX.utils.book_new();

    // 可以自定义下载之后的sheetname
    XLSX.utils.book_append_sheet(wb, ws, 'sheet1');

    /* 生成xlsx文件 */
    XLSX.writeFile(wb, `excel名称(自定义)${moment().format('YYYY_MM_DD_HH_mm_ss')}.xlsx`);
  };

总结:

使用这个库导出,不会出现一些数字类型字段内容精度丢失问题