使用ExcelJS读取多工作表Excel时获取表名返回undefined的问题
解决ExcelJS读取工作表返回undefined并获取名称的问题
问题原因
- ExcelJS中
getWorksheet()方法的索引参数是从1开始计数的,传入0会找不到对应工作表,因此返回undefined。 - 直接打印工作表对象无法得到名称,需要访问对象的
name属性。
修正方案
1. 获取指定索引的工作表名称
将索引改为1(对应第一个工作表),并访问name属性:
const Excel = require("exceljs"); const workbook = new Excel.Workbook(); const filePath = `./test/CustomerData.xlsx`; workbook.xlsx.readFile(filePath) .then(function() { // 索引从1开始,获取第一个工作表 let worksheet = workbook.getWorksheet(1); if (worksheet) { console.log("Sheet name---", worksheet.name); } else { console.log("指定索引的工作表不存在"); } }) .catch(err => console.error("读取文件出错:", err));
2. 遍历所有工作表并输出名称
如果需要获取所有工作表的名称,可直接遍历workbook.worksheets数组:
const Excel = require("exceljs"); const workbook = new Excel.Workbook(); const filePath = `./test/CustomerData.xlsx`; workbook.xlsx.readFile(filePath) .then(function() { console.log("所有工作表名称:"); workbook.worksheets.forEach(worksheet => { console.log(`Sheet name---${worksheet.name}`); }); }) .catch(err => console.error("读取文件出错:", err));
补充说明
- 除了用索引,还可以通过工作表名称直接定位:
workbook.getWorksheet("CustomerData1") - 增加
catch块能捕获文件路径错误、文件损坏等异常,便于排查问题。
内容的提问来源于stack exchange,提问作者steveS
相关产品推荐
相关产品推荐

