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

使用SheetJS解析含空格的Excel表头时报错该如何解决?

SheetJS含空格表头适配方案

核心原因是JavaScript不支持通过.运算符直接访问名称带空格的对象属性,你需要改用方括号语法访问这类属性。

1. 最小改动适配方案

直接修改遍历逻辑中属性访问的写法即可,修改后的代码如下:

$.each(jData, function (i, f) {
  var el =
    "<div class='thing'>" +
    "<h2>" +
    // 带空格的属性名用方括号包裹字符串形式的属性名
    f['First Name'] +
    "&nbsp;" +
    f['Last Name'] +
    "</h2>" +
    "<h3>" +
    f.Title +
    "</h3>" +
    "<p>" +
    f.Comment +
    "</p>" +
    "</div>";
  $(el).appendTo("#wrapper");
});

2. 可选优化:统一转换表头格式

如果你不想后续每次都写方括号,可以在转JSON时预处理表头,把空格统一替换为下划线:

/* Get worksheet */
var worksheet = workbook.Sheets[first_sheet_name];

// 预处理表头:把空格替换为下划线
const header = []
const range = XLSX.utils.decode_range(worksheet['!ref'])
for (let c = range.s.c; c <= range.e.c; c++) {
  const cell = worksheet[XLSX.utils.encode_cell({r: 0, c: c})]
  header.push(cell.v.replace(/\s+/g, '_'))
}

// 转换时传入处理后的表头,跳过原表头行
var jData = XLSX.utils.sheet_to_json(worksheet, { 
  raw: false,
  header: header,
  range: 1
});

// 后续就可以用下划线格式访问属性
$.each(jData, function (i, f) {
  var el =
    "<div class='thing'>" +
    "<h2>" +
    f.First_Name +
    "&nbsp;" +
    f.Last_Name +
    "</h2>" +
    "<h3>" +
    f.Title +
    "</h3>" +
    "<p>" +
    f.Comment +
    "</p>" +
    "</div>";
  $(el).appendTo("#wrapper");
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 14:45:02