XLSX.utils.sheet_to_json()解析excel,给空的单元格赋值为空字符串

前言
今天用到XLSX来解析excel文件,调用XLSX.utils.sheet_to_json(worksheet),发现如果单元格为空的话,解析出来的结果,就会缺少相应的key(如图所示)。但是我想要单元格为空的话,值就默认给空字符串,怎么办呢?只能去看看源码了,看有没有给默认值的方法。
请添加图片描述
请添加图片描述

源码探究
找源码里的sheet_to_json()方法,发现有三个同名的方法,有两个参数,第一个worksheet是要解析的excel文件的工作簿对象,第二参数opts?: Sheet2JSONOpts,
?表示是这个参数可有可无,你不传就没有,Sheet2JSONOpts这个是什么东西?我也不知道,只能接着往下看源码有没有这个东西的定义。(一般都会有)
请添加图片描述
果然,如我所料,终于在源码找到Sheet2JSONOpts的定义,发现有五个变量,这五个变量都带?,说明这个五个变量都可有可无。然后我就看到图中红框的部分,发现注释写这着Default value for null/undefined values,意思是值为空或未定义的默认值变量。这是不就是我要找的解决方法了吗?高兴得赶紧去实现一下。
请添加图片描述

解决
按照源码来定义第二个参数,给defval赋值为空的字符串,如代码所示

const sheet2JSONOpts = {
        /** Default value for null/undefined values */
        defval: ''//给defval赋值为空的字符串
}
//调用方法
const results = XLSX.utils.sheet_to_json(worksheet, sheet2JSONOpts)
console.log(results)

最后,结果成功解决我问题,如下图所示
请添加图片描述
总结
在用一些插件的时候,有些问题,其实可以通过看源码来找到很好的解决方法,插件会封装好一些方法,来给我们调用。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`xlsx.utils.json_to_sheet()` 方法是 `openpyxl` 库中的一个函数,用于将 JSON 格式的数据转换为工作表中的表格。该函数需要传入两个参数:JSON 数据和表格标题(可选)。 以下是一个使用 `xlsx.utils.json_to_sheet()` 方法将 JSON 数据写入工作表的示例代码: ```python import openpyxl from openpyxl.utils import get_column_letter from openpyxl.utils import json # JSON 数据 data = [ {"name": "张三", "age": 20, "gender": "男"}, {"name": "李四", "age": 22, "gender": "女"}, {"name": "王五", "age": 25, "gender": "男"} ] # 创建一个工作簿和工作表 workbook = openpyxl.Workbook() worksheet = workbook.active # 将 JSON 数据转换为工作表中的表格 json_data = json.dumps(data) worksheet = openpyxl.utils.json_to_sheet(json_data) # 设置表头 headers = ['姓名', '年龄', '性别'] for idx, header in enumerate(headers, 1): column = get_column_letter(idx) worksheet[f'{column}1'] = header # 将工作表添加到工作簿中 workbook.create_sheet('Sheet1', 0) workbook['Sheet1'] = worksheet # 保存工作簿 workbook.save('example.xlsx') ``` 这段代码将创建一个包含 JSON 数据的列表,然后使用 `json.dumps()` 方法将其转换为 JSON 字符串。接着,代码将创建一个工作簿和工作表,并将 JSON 数据转换为工作表中的表格。最后,代码将设置表头并将工作表添加到工作簿中,并将工作簿保存到名为 `example.xlsx` 的 Excel 文件中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值