刘璐珈

This commit is contained in:
Vergil
2020-03-09 17:18:31 +08:00
parent 8d4607b5ca
commit c2d4e64c35
21 changed files with 998 additions and 350 deletions

View File

@@ -218,3 +218,106 @@ export function export_json_to_excel({
type: "application/octet-stream"
}), `${filename}.${bookType}`);
}
//主要修改此函数内的方法
export function export_json_to_excel2({
multiHeader = [],
header,
data,
sheetname,
filename,
merges = [],
autoWidth = true,
bookType = "xlsx"
} = {}) {
/* original data */
filename = filename || "excel-list"
data = [...data]
for (var i = 0; i < header.length; i++) {
data[i].unshift(header[i])
}
// data.unshift(header)
for (let i = multiHeader.length - 1; i > -1; i--) {
data.unshift(multiHeader[i])
}
var ws_name = sheetname
var wb = new Workbook(),
ws = []
for (var j = 0; j < header.length; j++) {
ws.push(sheet_from_array_of_arrays(data[j]))
}
if (merges.length > 0) {
if (!ws["!merges"]) ws["!merges"] = []
merges.forEach(item => {
ws["!merges"].push(XLSX.utils.decode_range(item))
})
}
// console.log("width", autoWidth)
if (autoWidth) {
/*设置worksheet每列的最大宽度*/
var colWidth = []
for (var k = 0; k < header.length; k++) {
colWidth.push(
data[k].map(row =>
row.map(val => {
/*先判断是否为null/undefined*/
if (val == null) {
return {
wch: 10
}
} else if (val.toString().charCodeAt(0) > 255) {
/*再判断是否为中文*/
return {
wch: val.toString().length * 2
}
} else {
return {
wch: val.toString().length
}
}
})
)
)
}
/*以第一行为初始值*/
let result = []
for (var k = 0; k < colWidth.length; k++) {
result[k] = colWidth[k][0]
for (let i = 1; i < colWidth[k].length; i++) {
for (let j = 0; j < colWidth[k][i].length; j++) {
if (result[k][j]["wch"] < colWidth[k][i][j]["wch"]) {
result[k][j]["wch"] = colWidth[k][i][j]["wch"]
}
}
}
}
// 分别给sheet表设置宽度
for (var l = 0; l < result.length; l++) {
ws[l]["!cols"] = result[l]
}
}
/* add worksheet to workbook */
for (var k = 0; k < header.length; k++) {
wb.SheetNames.push(ws_name[k])
wb.Sheets[ws_name[k]] = ws[k]
}
var wbout = XLSX.write(wb, {
bookType: bookType,
bookSST: false,
type: "binary"
})
saveAs(
new Blob([s2ab(wbout)], {
type: "application/octet-stream"
}),
`${filename}.${bookType}`
)
}