//excal导出(全部导出)
/**
*
* @param dataSource 表格的数据源
* @param columns 表格的标题栏
* @param filename 导出的excal文件名称
* @constructor
*/
function ExportExcelButton (dataSource,columns,filename ){
// 去除序号栏
let indexNum = columns.findIndex((item)=>{
return item.title == '序号'
})
if(indexNum>=0){
columns = columns.filter((item)=>{
return item.title !== '序号'
})
}
//去除操作栏
let indexAction = columns.findIndex((item)=>{
return item.title == '操作'
});
if(indexAction >= 0){
columns = columns.filter((item)=>{
return item.title !== '操作'
})
}
let data1 = transData(columns, dataSource)
let ws = XLSX.utils.aoa_to_sheet(data1);
let wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
XLSX.writeFile(wb, `${filename}.xlsx`)
}
//数据结果处理
function transData(columns, tableList) {
const obj = columns.reduce((acc, cur) => {
if (!acc.titles && !acc.keys) {
acc.titles = [];
acc.keys = [];
}
acc.titles.push(cur.title);
acc.keys.push(cur.dataIndex);
return acc;
}, {});
const tableBody = tableList.map(item => {
return obj.keys.map(key => item[key]);
});
// tableBody.forEach((el,index)=>{
// el[0] = index+1;
// })
// console.log(tableBody)
return [ obj.titles, ...tableBody ];
}
export {ExportExcelButton}