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

使用NPM包XLSX读取表格时,如何保留空列A并截止到D列?

问题描述

我有一个XLS表格,需求如下:

  • 读取无数据的A列并将其包含在结果中
  • 不读取D列之后无数据的列

当前使用的代码片段如下:

import { read, utils, writeFileXLSX } from 'xlsx';

const f = await (await fetch("http://localhost:3001/experiment.csv")).arrayBuffer();
 
const type = "array";
const wb = read(f, { type }); 
const ws = wb.Sheets[wb.SheetNames[0]]; 

const rows = utils.sheet_to_json(ws, { header: "A" ,  defval }); 

/* create column array */
const range = utils.decode_range(ws["!ref"]||"A1");
const columns = Array.from({ length: range.e.c + 1 }, (_, i) => ({
  key: i, 
  name: utils.encode_col(i), // 列标签为A、B等
}));

console.log('All Row rows=',rows,'columns2=',columns);

现在打印rows时未包含A列数据,请问需要在utils.sheet_to_json中设置哪些选项才能读取A列?


解决方案

要保留空的A列,你需要调整utils.sheet_to_json的两个核心参数:

  1. 给defval赋值
    你当前代码只写了defval但未指定值,这会导致空单元格被跳过。给它设置一个默认值(比如空字符串""或null),就能让空的A列被保留在结果里。

  2. 添加blankrows: true参数
    这个参数会强制保留空行,确保即使A列所在行没有其他数据,整行也会被包含在结果数组中。

修改后的sheet_to_json调用代码:

const rows = utils.sheet_to_json(ws, { 
  header: "A", 
  defval: "", // 用空字符串填充空单元格,保留空列
  blankrows: true // 保留空行
});

额外说明

  • header: "A"已经是正确设置,它会让结果以列字母(A、B、C...)作为对象的键,符合你要保留A列的需求。
  • 你现有的range逻辑已经能自动识别表格的有效列范围(到D列为止),所以D列之后的空列不会被读取,无需额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:08:07