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

从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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:25:20