You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XLSX库写入Excel文件时触发cannot save file报错

问题

我编写了一个函数,用于读取Excel工作簿、添加数据后保存文件。目前读取和添加数据的操作均正常,但尝试任何保存方法时都会报错。

代码如下:

import * as XLSX from 'xlsx/xlsx.mjs';
import * as fs from 'fs';
const xlsxFilePath = 'file.xlsx'

export function addReportToExcel(start, ID, viewID, title, description, attachements, submissionDate) {
    const workbook = XLSX.read(fs.readFileSync(xlsxFilePath));
    const worksheet = workbook.Sheets['Bugs'];
    const rowNumber = ID + 3; // 表头占用多行,此处做偏移处理
    XLSX.utils.sheet_add_aoa(worksheet, [
            [viewID],
            [title],
            [description],
            [attachements],
            [submissionDate],
            ['Reviewing'],
            [submissionDate],
            ['-'],
            ['-']
        ], { origin: {c: start, r: rowNumber}});

    XLSX.writeFile(workbook, xlsxFilePath);
};

报错信息:

/node_modules/xlsx/xlsx.mjs:3220
        throw new Error("cannot save file " + fname);
              ^

Error: cannot save file book.xlsx
    at write_dl (/node_modules/xlsx/xlsx.mjs:3220:8)
    at write_zip_denouement (/node_modules/xlsx/xlsx.mjs:23898:31)
    at write_zip_type (/node_modules/xlsx/xlsx.mjs:23868:9)
    at writeSync (/node_modules/xlsx/xlsx.mjs:24005:22)
    at Module.writeFileSync (/node_modules/xlsx/xlsx.mjs:24028:9)
    at addReportToExcel (/src/common.js:60:14)
    at test.js:3:1
    at ModuleJob.run (node:internal/modules/esm/module_job:194:25)
解决方法
  • 核对文件路径与权限:

    1. 注意到报错中显示要保存的是book.xlsx,但代码里定义的路径是file.xlsx,先确认文件名是否一致,排查拼写错误。
    2. 检查目标文件所在目录的写入权限,Linux/macOS系统可通过chmod +w 目标目录赋予写入权限,Windows系统需确保当前用户有修改该文件的权限。
  • 替换为Node.js适配的写入方式:
    XLSX.writeFile是为浏览器环境设计的API,在Node.js中建议结合fs模块手动处理Buffer:
    将原代码中的XLSX.writeFile(workbook, xlsxFilePath);替换为:

    // 生成Excel文件的Buffer
    const excelBuffer = XLSX.write(workbook, { type: 'buffer', bookType: 'xlsx' });
    // 用fs模块写入文件
    fs.writeFileSync(xlsxFilePath, excelBuffer);
    
  • 排查文件占用情况:
    确认目标Excel文件未被其他程序(如Excel客户端、其他后台进程)打开,文件被占用会导致写入失败。

内容的提问来源于stack exchange,提问作者coopchap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:48:22