excel合并单元格导出
data() {
return {
content: "",
//要导出的数组,格式为每行一个数组。
jsono: [
["待观察者", "@merges", "明日之星", "@merges", "超级明星", "@merges"],
["张三", "李四", "王五王", "赵六", "李四1", "李四2"],
["", "", "", "", "李四3", "李四4"],
["", "", "", "", "李四5", "李四6"],
["绩效不佳", "@merges", "中坚力量", "@merges", "表现出色", "@merges"],
["李四4", "李四5", "李四7", "李四8", "测试1", "测试2"],
["李四6", "", "李四9", "", "测试3", ""],
["未胜任者", "@merges", "表现尚可", "@merges", "稳定贡献者", "@merges"],
["小七", "管理员", "小林", "小吴", "小周", "小赵"],
["培训员", "", "小徐", "", "小张", ""],
],
};
},
methods:{
downloadExl(data) {
let zElin = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"];
let saveJson = {
"!ref": `A1:${zElin[5]}${data.length}`,
"!merges": [],
};
data.forEach((tr, x) => {
tr.forEach((item, i) => {
let key = zElin[i] + (x + 1);
if (item == "@merges") {
saveJson["!merges"].push({
s: {
c: i - 1,
r: x,
},
e: {
c: i,
r: x,
},
});
}
saveJson[key] = {
t: "s",
v: item,
};
});
});
const wb = {
SheetNames: ["Sheet1"],
Sheets: {},
Props: {},
};
const wopts = {
bookType: "xlsx",
bookSST: true,
type: "binary",
cellStyles: true,
};
//这里的数据是用来定义导出的数据类型
wb.Sheets["Sheet1"] = saveJson;
let buf = this.s2ab(XLSX.write(wb, wopts));
this.$nextTick(() => {
this.saveAs(
new Blob([buf], {
type: "application/octet-stream",
}),
"人才九宫格" +
"." +
(wopts.bookType == "biff2" ? "xls" : wopts.bookType)
);
});
},
s2ab(s) {
if (typeof ArrayBuffer !== "undefined") {
let buf = new ArrayBuffer(s.length);
let view = new Uint8Array(buf);
for (let i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
return buf;
} else {
let buf = new Array(s.length);
for (let i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xff;
return buf;
}
},
saveAs(obj, fileName) {
//创建a标签模拟下载
let tmpa = document.createElement("a");
tmpa.download = fileName || "下载";
tmpa.href = URL.createObjectURL(obj);
tmpa.click();
setTimeout(() => {
URL.revokeObjectURL(obj);
}, 100);
},
}