项目中对获取的数据进行下载成Excel表格
//moment是操作日期的插件
//引入lodash是为了方便操作数据
//xlsx是获取表格的必须插件
import moment from 'moment';
import _ from 'lodash';
import xlsx from 'xlsx';
export function exportCsv(originList, originColumns) {
//originList, originColumns 分别为你需要下载的数据列表以及数据title
//这两条不能为空,否则报错
//不能直接操作原数据,因为可能会对数据进行一些必要的清楚/筛选操作,所以需要用到loadsh的深复制
if (_.isEmpty(originList) || _.isEmpty(originColumns)) {
return;
}
let list = _.cloneDeep(originList);
const columns = _.cloneDeep(originColumns);
const data = [];
//数据title中有“操作”这一条(最后一条)不必进行打印
list.forEach((col, k) => {
const colProfile = {};
columns.forEach((item, index) => {
if (_.get(item, 'title') === '操作') {
return;
}
//使用lodash的get方法,这样当数据为undefined的时候不会报错
// let value = _.get(col, _.get(item, 'dataIndex'), '暂无');
let value = _.get(col, _.get(item, 'dataIndex'));
if (!_.get(item, 'dataIndex')) {
value = item.convertor(col);
}
if (item.convertor && _.isFunction(item.convertor) && _.get(item, 'dataIndex')) {
value = item.convertor(value);
}
if (_.isArray(value)) {
value = value.join(',');
}
if(_.isArray(_.get(value,"industries"))){
value=value.industries.join(",")
}
if (_.get(item, 'dataIndex') === 'index') {
value = k + 1;
}
_.set(colProfile, _.get(item, 'title'), value);
});
data.push(colProfile);
});
const ws = xlsx.utils.json_to_sheet(data);
const wb = xlsx.utils.book_new();
xlsx.utils.book_append_sheet(wb, ws, moment().format('YYYYMMDDHHmmss'));
xlsx.writeFile(wb, `${moment().format('YYYYMMDDHHmmss')}.xlsx`);
}