使用SheetJS解析含空格的Excel表头时报错该如何解决?
SheetJS含空格表头适配方案
核心原因是JavaScript不支持通过.运算符直接访问名称带空格的对象属性,你需要改用方括号语法访问这类属性。
1. 最小改动适配方案
直接修改遍历逻辑中属性访问的写法即可,修改后的代码如下:
$.each(jData, function (i, f) { var el = "<div class='thing'>" + "<h2>" + // 带空格的属性名用方括号包裹字符串形式的属性名 f['First Name'] + " " + 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 + " " + f.Last_Name + "</h2>" + "<h3>" + f.Title + "</h3>" + "<p>" + f.Comment + "</p>" + "</div>"; $(el).appendTo("#wrapper"); });
内容的提问来源于stack exchange,提问作者ultraloveninja
相关产品推荐
相关产品推荐

