从Excel生成JSON:实现空白单元格输出null的技术求助
解决Excel VBA生成JSON时空单元格字段被剔除、输出null的问题
你的问题根源在于:当单元格为空时,c.Value返回VBA的Empty值,JsonConverter在序列化过程中会自动忽略这类值对应的Dictionary条目,导致字段从JSON中消失。要让空白单元格对应JSON的null,只需把Empty转换为VBA的Null类型即可。
修改核心逻辑:在向jsonObject添加键值对时,判断单元格是否为空,为空则传入Null而非原Empty值。
修改后的完整代码:
Private Sub SaveAsJSON_Click() Set ObjectProperties = CreateObject("Scripting.Dictionary") For Each c In ActiveSheet.ListObjects(1).HeaderRowRange.Cells ObjectProperties.Add c.Column, c.Value Next Dim CollectionToJson As New Collection For Each r In ActiveSheet.ListObjects(1).ListRows Set jsonObject = CreateObject("Scripting.Dictionary") For Each c In r.Range.Cells ' 判断单元格是否为空,为空则用Null代替Empty Dim cellValue As Variant If IsEmpty(c.Value) Then cellValue = Null Else cellValue = c.Value End If jsonObject.Add ObjectProperties(c.Column), cellValue Next CollectionToJson.Add jsonObject Next fileSaveName = Application.GetSaveAsFilename(fileFilter:="JSON Files (*.json), *.json") If fileSaveName <> False Then fileNumber = FreeFile Open fileSaveName For Output As fileNumber Print #fileNumber, JsonConverter.ConvertToJson(CollectionToJson, Whitespace:=2) Close fileNumber End If End Sub
关键修改说明
- 新增
IsEmpty(c.Value)判断:精准识别空白单元格返回的Empty值 - 将空白单元格对应的值设为
Null:JsonConverter会把VBA的Null序列化为JSON标准的null,同时保留字段名不会被剔除
内容的提问来源于stack exchange,提问作者jchrist
相关产品推荐
相关产品推荐

