今天给大家分享一个导出excel文件表格的文章
这次使用的方法是ExcelJs,个人感觉这个使用还是可以的,主要的问题就是导出成功后会报错,提示文件损坏或者是扩展名错误。目前还没有找到代码逻辑的解决的方法,如果有好的方法,大家可以推荐给我,我也来学习一下。(这个问题解决方法:把文件名后缀改成xxxx.xlsx。例:导出案例.xlsx)
安装:npm install exceljs
//data是主题数据,
数据格式是:[{导出:'11111'}]
const exportToExcel = (data: any) => {
const date = new Date()
//导出后文件名称
const sheetName = `导出文件_${moment(date).format('YYYYMMDDHHmmss')}`;
const headerName = "RequestsList";
const workbook = new ExcelJs.Workbook();
const sheet = workbook.addWorksheet(sheetName, {
//是否显示表格
views: [{ showGridLines: true }]
});
const columnArr = [];
for (let i in data[0]) {
let tempObj = { name: "" };
tempObj.name = i;
columnArr.push(tempObj);
}
sheet.addTable({
name: headerName,
ref: "A1", // 主要数据从A5单元格开始
headerRow: true,
totalsRow: false,
style: {
theme: "TableStyleMedium2",
showRowStripes: true,
},
columns: columnArr ? columnArr : [{ name: "" }],
rows: data?.map((e: any) => {
let arr = [];
for (let i in e) {
arr.push(e[i]);
}
return arr;
}),
});
//表头的宽度
sheet.columns = sheet.columns.map((e: any) => {
const expr = e.values[5];
if (expr) {
return { width: 20 }
} else {
return { width: 20 }
}
});
const writeFile = (fileName: any, content: any) => {
const link = document.createElement("a");
const blob = new Blob([content], {
type: "application/vnd.ms-excel;charset=utf-8;"
});
link.download = fileName;
link.href = URL.createObjectURL(blob);
link.click();
};
workbook.xlsx.writeBuffer().then((buffer) => {
writeFile(sheetName, buffer);
});
};