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

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 },只有这个会生成二维数组,输出每一行数据,并且不是键值对!

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

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XLSX.utils.sheet_to_json是一个用于将Excel表格解析为JSON格式的函数。根据引用和引用的内容,可以看出该函数接受两个参数:工作簿对象(wb.Sheets)和选项对象。选项对象可以用来指定解析过程中的一些设置,比如指定表头行(header)和默认值(defval)。通过调用该函数,可以将Excel表格中的数据解析为JSON格式,方便后续的数据处理和存储。引用和引用中的代码示例演示了如何使用该函数进行解析。引用提到了excel-json-sheet组件,该组件基于sheet.js,并在其基础功能上进行了二次封装,提供了更多的解析和校验功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue EXCEL XLSX.utils.sheet_to_json()解析Excel文件](https://blog.csdn.net/ifmushroom/article/details/109002131)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [excel-json-sheet:excel解析工具](https://download.csdn.net/download/weixin_42156940/18364911)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值