共计 1622 个字符,预计需要花费 5 分钟才能阅读完成。
` // 导出 excel
const length = this.columnOptions.length - 1;// 一级表头的长度
let sHeader = [];
let h1 = []; // 类别项
for (let i = 0; i < this.tableHeader.length; i++) {let arr = [];
if (length == 5 || this.homeData.type == 999) {arr = [this.tableHeader[i].typeValueName, '','', ''];
} else {arr = [this.tableHeader[i].typeValueName, '',''];
}
h1 = h1.concat(arr);
sHeader = this.tableItem.map(h => h.label).concat(sHeader);
}
const header = Array(length).fill('').concat(sHeader);// 二级表内容
const fHeader = this.columnOptions.filter(h => h.label).map(i => i.label);
const multiHeader = [fHeader.concat(h1)]; // 多级表头
const data = [];// 传入的数据
const filterVal = this.columnOptions.filter(p => p.prop).map(i => i.prop); // 表头名
for (let i = 0; i < this.listData.length; i++) {const data1 = [].concat.apply([], this.formatJson(this.tableItem.map(h => h.prop), this.listData[i].customReportPoList));// 二级表数据
data[i] = this.formatJson(filterVal, this.listData)[i].concat(data1);
}
console.log(data, 'data');
// 合并 excel 中的列
const merges = [];
for (var i = 0; i < length; i++) {const p = `${String.fromCharCode((65 + i))}1:${String.fromCharCode((65 + i))}2`;
merges.push(p);
}
let p1 = '';
for (let k = 0; k < (data[0].length - length) / this.tableItem.length; k++) {
let m = length;
m = m + k * this.tableItem.length;
p1 = `${m < 26 ? String.fromCharCode((65 + m)) : (m - 26 < 26) ? 'A' + String.fromCharCode((65 + m - 26)) : 'B' + String.fromCharCode((65 + m - 52))}1:${m + this.tableItem.length - 1 < 26 ? String.fromCharCode((65 + m + this.tableItem.length - 1)) : (m - 26 + this.tableItem.length - 1 < 26) ? 'A' + String.fromCharCode((65 + m - 26 + this.tableItem.length - 1)) : 'B' + String.fromCharCode((65 + m - 52 + this.tableItem.length))}1`;
merges.push(p1);
}
import('@/vendor/Export2Excel').then(excel => {
excel.export_json_to_excel({
multiHeader,
header,
data,
merges,
filename: this.title
});`
正文完