export const Excle = (thName: any, jsonData: any, fillName: string, filter?: any[], num?: any) => { //thName表头的名称,jsonData:数据,fillName下载后的文件命名,filter排除的数据,num统计数据 //num = { thName: { 'total_num': '群下单数', 'realprice': '客单价', 'total_commission': '群佣金收入' }, jsonData: [...Xdata.total] } //列标题,逗号隔开,每一个逗号就是隔开一个单元格 let str: any = ''; // Object.keys(jsonData[0]).forEach((a: any) => { // if (filter && thName[a]) { // str += `${thName[a]},`; // } // if(!filter){ // str += `${thName[a]},`; // } // }) Object.keys(thName).forEach((a: any) => { if (filter && a) { if (!filter.includes(thName[a])) { str += `${thName[a]},`; } } if (!filter) { str += `${thName[a]},`; } }) str += `\n` //增加\t为了不让表格显示科学计数法或者其他格式 for (let i = 0; i < jsonData.length; i++) { for (let item in thName) { if (filter && filter.every((a: string) => { return a != thName[item] })) { let s = Array.isArray(jsonData[i][item]) ? jsonData[i][item].join('|') : jsonData[i][item] str += `${s + '\t'},`; } if (!filter) { str += `${jsonData[i][item] + '\t'},`; } } str += '\n'; } if (num) { Object.keys(num.thName).forEach((a: any) => { if (filter && a) { str += `${num.thName[a]},`; } if (!filter) { str += `${num.thName[a]},`; } }) str += `\n` for (let i = 0; i < num.jsonData.length; i++) { for (let item in num.thName) { if (filter && filter.every((a: any) => { return a != item })) { str += `${num.jsonData[i][item] + '\t'},`; } if (!filter) { str += `${num.jsonData[i][item] + '\t'},`; } } str += '\n'; } } // encodeURIComponent解决中文乱码 let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str); //通过创建a标签实现 let link = document.createElement("a"); link.href = uri; //对下载的文件命名 link.download = `${fillName}.csv`; document.body.appendChild(link); link.click(); document.body.removeChild(link); }