前端第一次修改文件中的数据,头疼的狠,特此记录
- 格式要求:
- data数组,放进去的第一个数据相当于表格的列,数组有多少项,就有多少列
其余push进去的都是下面对应的行
- 前端使用到的插件是xlsx,可git自己看,主要是前端的一点点逻辑
exportListToXlsx(fileName, list) {
console.log('xlsx', list);
const data = [];
if (list.length > 0) {
const row = list[0];
const cols = [];
for (let key in row) {
if (row[key] instanceof Array) {
row[key].forEach((infoItem) => {
if (infoItem.indexOf('|') !== -1) {
infoItem.split('|').forEach((splitItem) => {
cols.push(splitItem.split(':')[0]);
});
}
else{
cols.push(infoItem.split(':')[0]);
}
})
}
else if (row[key] instanceof Object) {
for (let name in row[key]) {
cols.push(name);
}
}
else {
cols.push(key);
}
}
data.push(cols);
list.forEach((row) => {
const val = [];
for (let key in row) {
if (row[key] instanceof Array) {
row[key].forEach((infoItem) => {
if (infoItem.indexOf('|') !== -1) {
infoItem.split('|').forEach((splitItem) => {
val.push(splitItem.split(':')[1]);
});
}
else{
val.push(infoItem.split(':')[1]);
}
})
}
else if (row[key] instanceof Object) {
const objRow = row[key]
for (let name in objRow) {
val.push(objRow[name]);
}
}
else {
val.push(row[key]);
}
}
data.push(val);
});
}
const wb = XLSX.utils.book_new();
const ws = XLSX.utils.aoa_to_sheet(data);
XLSX.utils.book_append_sheet(wb, ws, fileName);
XLSX.writeFile(wb, `${fileName}.csv`);
}