xlsx.utils.sheet_to_json的{ header: 1 }起的作用,header属性的研究

文章详细介绍了XLSX.utils.sheet_to_json函数在解析Excel数据时的不同选项,如header参数如何影响输出格式,包括生成二维数组、键值对,并且展示了header为数字、字符串和字符数组时的不同效果。此外,还提到了空值处理和列选择的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XLSX.utils.sheet_to_json 是为了把excel里面的数据解析出来,这是它的定义:

其中,worksheet表示特定表名的工作表,opts属于可要可不要的参数。


opts也有几种类型:

export interface Sheet2JSONOpts extends DateNFOption {
    /** Output format */
    header?: "A"|number|string[];

    /** Override worksheet range */
    range?: any;

    /** Include or omit blank lines in the output */
    blankrows?: boolean;

    /** Default value for null/undefined values */
    defval?: any;

    /** if true, return raw data; if false, return formatted text */
    raw?: boolean;

    /** if true, skip hidden rows and columns */
    skipHidden?: boolean;

    /** if true, return raw numbers; if false, return formatted numbers */
    rawNumbers?: boolean;
}

其中,header表示控制输出的类型,range表示跳过的行,defavl表示默认值,为null和undefine时,会默认跳过。


对于header,也有几种类型
在这里插入图片描述

下面直接上例子:
这是我的excel数据:
在这里插入图片描述

这是代码1:
const outdata = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName],{ header: 1 })
console.log(outdata)

这是输出的结果1:
[
  [ 's', 'h', 'e', 't' ],
  [ 1, <1 empty item>, 2, 3 ],
  [ '测试1', '测试2', '测试3' ]
]
这是代码2:
const outdata = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName],{ header: 2 })
console.log(outdata)

这是输出的结果2:
[ { s: 1, e: 2, t: 3 }, { s: '测试1', h: '测试2', e: '测试3' } ]
这是代码3:
const outdata = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName],{ header: 8 })
console.log(outdata)

这是输出的结果3:
[ { s: 1, e: 2, t: 3 }, { s: '测试1', h: '测试2', e: '测试3' } ]

可以看出,
①当header 为1时,输出为一个二维数组,输出了所有数据,包含了空值项,但每行末尾空值不显示。
②当header不为1时,输出一个包含字符串的数组,不包含空值项,直接跳过空值。同时是一个以第一行为Key值的键值对。


这是代码4:
const outdata = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName],{ header: 'A' })
console.log(outdata)

这是输出的结果4:
[
  { A: 's', B: 'h', C: 'e', D: 't' },
  { A: 1, C: 2, D: 3 },
  { A: '测试1', B: '测试2', C: '测试3' }
]

可以看出,当参数为“A”时,是一个以excel的ABCDE等为key值的键值对,默认也不显示空值。


这是代码5:
const outdata=XLSX.utils.sheet_to_json(workbook.Sheets[sheetName],{ header:  ["A","C",1,3] })
console.log(outdata)

这是输出的结果5:
[
  { '1': 'e', '3': 't', A: 's', C: 'h' },
  { '1': 2, '3': 3, A: 1 },
  { '1': '测试3', A: '测试1', C: '测试2' }
]
这是代码6:
const outdata=XLSX.utils.sheet_to_json(workbook.Sheets[sheetName],{ header:["A","C",1,3,6,"N"] })
console.log(outdata)

这是输出的结果6:
[
  { '1': 'e', '3': 't', A: 's', C: 'h' },
  { '1': 2, '3': 3, A: 1 },
  { '1': '测试3', A: '测试1', C: '测试2' }
]

可以看出,当参数是字符数组时,输出是以字符数组的字符为key值得键值对。
同时有这些特性:
①每个字符的序号与excel原始数据对应,我的excel只有四列数据,这里无论你的字符数组有多长,也只会取前四个。
②不同字符,以阿拉伯数字从小到大优先排列,后面字母从A到Z排列。


一般情况我们都使用,{ header: 1 },只有这个会生成二维数组,输出每一行数据,并且不是键值对!

具体详情可见我参考的文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值