下面的代码给了我损坏的文件,请帮忙
exports.testExcelCreation = async function () {
// construct a streaming XLSX workbook writer with styles and shared strings
const options = {
filename: 'assets/Uploads/Reports/TEST/streamed-workbook.xlsx',
useStyles: true,
useSharedStrings: true
};
const workBook = new ExcelJs.stream.xlsx.WorkbookWriter(options);
const workSheet = workBook.addWorksheet("sheet 1");
console.log("Success");
}
我想你忘了在console.log("Success");
之前添加await workbook.commit();
我也面临类似的问题。我试图同时从代码中的多个位置异步更新excel文件。如果我们试图在文件已处于写入模式时以读取模式打开该文件,则会使文件损坏。
我陷入了以下错误。
Error Error: Corrupted zip or bug: expected 16 records in central dir, got 0
at ZipEntries.readCentralDir (/node_modules/jszip/lib/zipEntries.js:146:23)
at ZipEntries.load (/node_modules/jszip/lib/zipEntries.js:257:14)
at /node_modules/jszip/lib/load.js:48:24
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async XLSX.load (/node_modules/exceljs/lib/xlsx/xlsx.js:279:17)
at async XLSX.readFile (/node_modules/exceljs/lib/xlsx/xlsx.js:55:24)
我仔细阅读了我的代码,发现我已经多次异步调用updateexcel方法。我使它成为同步的,并删除了不需要的调用updateexcel方法的代码。这解决了我的问题。
对我来说,这是axios responseType问题。我没有通过axios params 中的responseType
错误:
const res = await axios.get(`${process.env.url}/excel`, { params: { type: "excelFormat"} })
正确:
const res = await axios.get(`${process.env.url}/marketplace/seller/excel`, { params: { type: "excelFormat"}, responseType: "arraybuffer" })