安装xlsx
npm install xlsx
//对应字段的工作簿名称:
dataLoaderFormatter:{
'productInfos':'基本信息',
'productGradedInfos':'结构化信息',
}
function onDownload(){
let data = {
productInfos:[
{
code:'123',
type:'‘A’,
status:'完成'
}, {
code:'456',
type:'‘B’,
status:'未完成'
},
],
productGradedInfos:[
{
fullName:'全称1',
name:'简称1'
}
]
}
formatterUpload(data)
let objBox : any = []
Object.keys(res.data).map((item:any)=>{
objBox.push({
sheetName : state.dataLoaderFormatter[item], // excel工作簿名称
sheetData :XLSX.utils.json_to_sheet(res.data[item]) //放入工作簿的数据
})
})
const wb = XLSX.utils.book_new() //创建excel
objBox.map((item:any)=>{
XLSX.utils.book_append_sheet(wb, item.sheetData, item.sheetName)
})
const now = moment().format('YYYYMMDDHHmmss');
XLSX.writeFile(wb,`excel-${now}.xlsx`)
}
// 将字段处理成中文表头
function formatterUpload(data:any){
if(data.productInfos){
let arr : any= []
data.productInfos.map((item:any) => {
arr.push({
'代码':item.code,
'类型':item.type,
'状态':tem.status,
})
})
data.productInfos = arr
}
if(data.productGradedInfos){
let arr : any = []
data.productGradedInfos.map((item:any) => {
arr.push({
'全称':item.fullName,
'简称':item.name,
})
})
data.productGradedInfos = arr
}
return data
}