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

使用xlsx库读取Excel数据生成速度时间图表 解决属性名异常与列提取问题

出现__Empty_*格式的属性是xlsx库的默认逻辑:当解析Excel时检测到表头行存在空单元格,就会自动生成这类占位属性名。两个问题的解决方案如下:

1. 替换异常属性名

你可以在调用sheet_to_json方法时直接通过配置参数自定义列名,从源头避免生成占位属性:

  • 新增header参数,按照Excel从左到右的列顺序传入自定义属性名即可,比如你要生成时间速度图表,可设置为['time', 'speed'],如果列数更多按顺序补充名称即可
  • 如果Excel第一行是原有表头,需要跳过表头行的话新增range: 1参数即可

如果不想提前指定列名,也可以在拿到解析结果后遍历对象,批量替换包含__Empty_的属性名,或者直接过滤掉无效属性。

2. 读取指定列为数组

当解析后的对象属性名规范化后,直接用数组map方法提取对应属性即可得到目标列的数组,可直接用于速度时间图表的渲染。

修改后的完整代码示例:

// 引入依赖
const reader = require('xlsx')
  
// 读取Excel文件
const file = reader.readFile('./report.xlsx')
let data = []
const sheets = file.SheetNames
  
for(let i = 0; i < sheets.length; i++) {
  const temp = reader.utils.sheet_to_json(
    file.Sheets[file.SheetNames[i]],
    // 新增配置项:自定义列名,跳过原有表头行(不需要跳过可删除range参数)
    {
      header: ['time', 'speed'],
      range: 1
    }
  )
  temp.forEach((res) => {
    data.push(res)
  })
}

// 提取指定列为数组
const timeArray = data.map(item => item.time)
const speedArray = data.map(item => item.speed)

// 打印验证
console.log('时间列数组:', timeArray)
console.log('速度列数组:', speedArray)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:09:02