useExportExcel
用于导出 excel hooks
js
const useExportExcel = () => {
/**
*
* @description 导出多Sheet表格
* @param {String} fileName 文件名
* @param {Array<{json:Array,sheetName:string,header:object}>} data 数据
*/
const toExcelSheets = (fileName, data) => {
const excel = XLSX.utils.book_new();
if (Array.isArray(data) && data.length > 0) {
data.forEach((sheetData) => {
if (
sheetData &&
sheetData.json &&
Array.isArray(sheetData.json) &&
sheetData.header &&
typeof sheetData.header === "object" &&
sheetData.sheetName
) {
const jsonData = sheetData.json.map((item) => {
const res = {};
for (const key in item) {
if (sheetData.header.hasOwnProperty(key)) {
res[sheetData.header[key]] = item[key] ?? "-";
}
}
return res;
});
const _data = XLSX.utils.json_to_sheet(jsonData);
XLSX.utils.book_append_sheet(excel, _data, sheetData.sheetName);
} else {
console.error("Invalid sheet data:", sheetData);
}
});
} else {
console.warn("No valid data provided for Excel sheets.");
}
XLSX.writeFile(
excel,
fileName ? fileName + ".xlsx" : "生成报告" + ".xlsx",
{
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
}
);
};
return { toExcelSheets };
};