如何用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是当前脚本文件所在目录的绝对路径,拼接后路径更可靠
二、修复代码中的其他错误(避免后续运行异常)
你的代码还有几处会导致运行失败的问题:
- 参数名不匹配:函数参数是
colNum,但代码里用了未定义的cellNum - 异步返回值失效:
readFile是异步操作,原函数未返回Promise,调用后无法获取数据,需改为异步函数 - 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
相关产品推荐
相关产品推荐

