试图从ExcelJs创建excel文件,但它给了我损坏的文件



下面的代码给了我损坏的文件,请帮忙

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" })

最新更新