前端修改下载文件

130 阅读1分钟

前端第一次修改文件中的数据,头疼的狠,特此记录

  • 格式要求:
  • 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`);
}