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

Node.js读取Excel数据触发TypeError,请求技术解决方案

问题:使用xlsx库读取Excel数据时触发TypeError错误

我在Visual Studio中尝试处理Excel文件,使用xlsx库读取数据时遇到问题。我的代码如下:

const urlStatusCode = require("url-status-code");
const xls = require("xlsx");

const url = 'https://www.cricinfo.com'
let workbook = xls.readFile("sitemap.xlsx");

let worksheet = workbook.Sheets[workbook.SheetNames[0]];

for(let ind = 0; ind < 390000; ind++){
    let urll = worksheet[`A${ind}`].v;
    console.log(urll);
}

运行后出现如下错误:

let urll = worksheet[`A${ind}`].v;
                                    ^
TypeError: Cannot read properties of undefined (reading 'v')

移除代码中的.v后,能得到包含t、h、v等字段的结果,但我需要获取v字段对应的值,恳请指导解决方法。


解决方法

错误原因

  1. Excel的单元格索引从1开始,你的循环从0启动,A0是不存在的单元格,导致worksheet[A0]为undefined,直接访问.v就会触发TypeError。
  2. 即使从1开始循环,当ind超过表格实际行数时,worksheet[A${ind}]同样会是undefined,也会报错。

方案一:检查单元格存在性后访问.v

修改循环起始值,并增加单元格存在性判断,避免访问undefined的属性:

const urlStatusCode = require("url-status-code");
const xls = require("xlsx");

const url = 'https://www.cricinfo.com'
let workbook = xls.readFile("sitemap.xlsx");

let worksheet = workbook.Sheets[workbook.SheetNames[0]];

// 从1开始遍历(Excel单元格索引起始值)
for(let ind = 1; ind < 390000; ind++){
    const cell = worksheet[`A${ind}`];
    // 先判断单元格是否存在
    if(cell){
        let urll = cell.v;
        console.log(urll);
    } else {
        // 单元格不存在时跳出循环,避免无效遍历
        break;
    }
}

方案二:使用xlsx工具函数转换为结构化数据(推荐)

利用xlsx内置的utils.sheet_to_json方法直接将工作表转换为数组,自动处理表格范围,无需手动指定循环上限:

const urlStatusCode = require("url-status-code");
const xls = require("xlsx");

const url = 'https://www.cricinfo.com'
let workbook = xls.readFile("sitemap.xlsx");

let worksheet = workbook.Sheets[workbook.SheetNames[0]];
// 将工作表转换为二维数组(header: 1表示忽略表头,直接返回行数据)
const data = xls.utils.sheet_to_json(worksheet, { header: 1 });

// 遍历A列数据(数组第一个元素对应每行的A列值)
for(const row of data){
    if(row[0]){
        console.log(row[0]);
    }
}

这个方案更可靠,因为它会自动识别表格的实际有效行数,避免不必要的循环和错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:46:03