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

如何用ExcelJS读取Excel表格?遇文件未找到异常求助

解决ExcelJS读取文件时的"文件未找到"异常及代码问题

一、优先排查文件路径问题

这是触发文件未找到异常的核心原因:

  • 相对路径是相对于当前执行脚本的工作目录,而非脚本文件所在目录。比如测试脚本在src/test下,用../testData/xxx.xlsx会去src/testData/找文件,若实际文件在项目根目录的testData下,路径需改为../../testData/Full-TestData.xlsx,或直接用绝对路径。
  • 可先打印当前工作目录确认路径基准:
    console.log(process.cwd()); // Node.js环境下执行,查看实际工作路径
    
  • 推荐用Node.js的path模块拼接绝对路径,彻底规避相对路径的不确定性:
    import path from 'path';
    const filePath = path.resolve(__dirname, '../testData/Full-TestData.xlsx');
    // __dirname是当前脚本文件所在目录的绝对路径,拼接后路径更可靠
    

二、修复代码中的其他错误(避免后续运行异常)

你的代码还有几处会导致运行失败的问题:

  1. 参数名不匹配:函数参数是colNum,但代码里用了未定义的cellNum
  2. 异步返回值失效:readFile是异步操作,原函数未返回Promise,调用后无法获取数据,需改为异步函数
  3. value调用错误:value是属性而非方法,不需要加(),直接用.value即可

修复后的完整代码:

import excel from 'exceljs';
import path from 'path';

async function getDataFromExcel(sheetName, rowNum, colNum) {
    const wb = new excel.Workbook();
    // 用绝对路径确保文件能被找到
    const filePath = path.resolve(__dirname, '../testData/Full-TestData.xlsx');
    await wb.xlsx.readFile(filePath);
    
    const sheet = wb.getWorksheet(sheetName);
    if (!sheet) {
        throw new Error(`找不到工作表:${sheetName}`);
    }
    const cell = sheet.getRow(rowNum).getCell(colNum);
    // 处理空值情况,避免toString报错
    return cell.value ? cell.value.toString() : '';
}

// 调用示例(需在异步环境中执行)
// async function test() {
//   const data = await getDataFromExcel('Sheet1', 2, 3);
//   console.log(data);
// }
// test();

三、额外检查项

  • 确认文件名拼写完全一致,注意大小写(Windows不区分,但Linux/Mac系统区分)
  • 确保文件未被其他程序锁定(比如Excel正打开该文件会导致读取失败)
  • 检查文件权限,保证执行脚本的进程有读取该文件的权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 05:15:59