业务需求:进行一键导出多sheet页的表格。
关键代码:
在Export2Excel.js文件处添加这个导出函数,此处需要注意的jsonData格式为多维数组
export function export2ExcelMultiSheet(th, jsonData, defaultTitle) {
var data = jsonData;
//添加标题
// debugger
for (var i = 0; i < th.length; i++) {
data[i].unshift([th[i]])
}
//这里是定义sheet的名称 有几个sheet就加几个
var ws_name = ["Sheet1","Sheet2"];
var wb = new Workbook(),ws=[];
//数据转换
for (var j = 0; j < th.length; j++) {
ws.push(sheet_from_array_of_arrays(data[j]))
}
/* add worksheet to workbook */
//生成多个sheet
for (var k = 0; k < th.length; k++) {
wb.SheetNames.push(ws_name[k])
wb.Sheets[ws_name[k]] = ws[k]
}
var wbout = XLSX.write(wb, {bookType: 'xlsx', bookSST: false, type: 'binary'});
var title = defaultTitle || '列表'
saveAs(new Blob([s2ab(wbout)], {type: "application/octet-stream"}), title + ".xlsx")
}
可以参考网上示例,如下图list三维数组结构,将需要导出的数据放入list[0],list[1]位置,内部数据结构,请自行处理。
我的实际代码如下,
说明,excelVal数组是图2excel第二行展示字段对应的接口返回字段集合,lis则是需要导出的数据源。data为处理之后的一级数据集合即上面提到的list[0],result为处理之后的三级数据集合即上面提到的list[1]