12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 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);
- }
|