列表数据导出成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`);
};
总结:
使用这个库导出,不会出现一些数字类型字段内容精度丢失问题