Excel 使用VBA代码将Excel转换为JSON

Excel 使用VBA代码将Excel转换为JSON

不必下载Excel转换为JSON的软件,您还可以使用VBA代码编辑器将Excel数据转换为JSON格式。您可以在VBA编辑器中创建自定义代码并运行它来完成任务。

VBA代码编辑器是Excel的开发工具或内置功能。当您下载MS Excel时,它默认随Excel一起提供。在VBA代码编辑器中,您可以编写自己的代码并执行特定任务。如果您习惯于进行编码,那么这是一个不错的方式。

通过将Excel列映射到JSON对象键创建Excel转换为JSON的代码。然后执行该代码将数据转换为JSON格式。如果您了解Visual Basic编程,则可以使用此工具。

为什么选择VBA代码编辑器

如果您擅长编码并创建逻辑代码,那么为什么要使用工具呢?在VBA代码编辑器中创建自己的自定义代码,并通过运行该代码将任意数量的Excel文档转换为JSON格式。不需要下载或互联网连接等。

您不需要明确下载任何工具来将Excel数据转换为JSON格式。您可以在使用Excel VBA代码编辑器时无需在系统上下载任何软件。如果您擅长进行编码,这是一个不错的方式。甚至您不需要安装VBA编辑器,因为它默认随Excel一起提供。

提示:您的Excel数据必须具有列名,因为第一行始终被视为标题。

打开VBA编辑器

  1. 您可以从开发者选项卡中在Excel中打开VBA代码编辑器。
  2. 如果您的Excel功能区中没有开发者选项卡,请右键单击功能区并从列表中选择开发者选项卡以自定义功能区。
  3. 然后,点击第一个选项 Visual Basic 以打开VBA代码编辑器。
  4. 在VBA代码编辑器中,在您当前打开的Excel文件下创建一个新模块。
  5. 在这里编写Excel转换为JSON的代码。

VBA代码

以下是将Excel文件数据转换为JSON格式的完整代码。复制以下代码并粘贴到相应的VBA代码编辑器中。

Public Function ExcelToJSON(rng As Range) As String
    ' Check there must be at least two columns in the Excel file
    If rng.Columns.Count < 2 Then
        ExcelToJSON = CVErr(xlErrNA)
        Exit Function
    End If
    Dim dataLoop, headerLoop As Long
    ' Get the first row of the Excel file as a header 
    Dim headerRange As Range: Set headerRange = Range(rng.Rows(1).Address)   
    ' Count the number of columns of targeted Excel file
    Dim colCount As Long: colCount = headerRange.Columns.Count   
    Dim JSON As String: JSON = "["    
    For dataLoop = 1 To rng.Rows.Count
        ' Skip the first row of the Excel file because it is used as header
        If dataLoop > 1 Then
            ' Start data row
            Dim jsonData As String: jsonData = "{"            
            ' Loop through each column and combine with the header
            For headerLoop = 1 To colCount
                jsonData = jsonData & """" & headerRange.Value2(1, headerLoop) & """" & ":"
                jsonData = jsonData & """" & rng.Value2(dataLoop, headerLoop) & """"
                jsonData = jsonData & ","
            Next headerLoop            
            ' Strip out the comma in last value of each row
            jsonData = Left(jsonData, Len(jsonData) - 1)            
            ' End data row
            JSON = JSON & jsonData & "},"
        End If
    Next    
    ' Strip out the last comma in last row of the Excel data
    JSON = Left(JSON, Len(JSON) - 1)   
    JSON = JSON & "]"    
    ExcelToJSON = JSON
End Function

在这个VBA代码中,我们定义了一个名为 ExcelToJSON 的函数,该函数将在Excel文件中用于将Excel转换为JSON。让我们看看它的执行过程。

语法

=ExcelToJSON(range)

此函数将使用您想要转换为JSON格式的Excel单元格范围,例如A1:F9。

将Excel数据转换为JSON格式

现在,我们将使用上述代码创建的函数 ExcelToJSON() 将Excel数据转换为JSON格式。请记住一件事-此函数仅适用于此特定文件。它不适用于其他Excel文件。

  1. 返回Excel文件,在您希望放置转换后的JSON结果的Excel单元格中编写以下ROUND()公式。例如, =ExcelToJSON(A1:D3)
    Excel 使用VBA代码将Excel转换为JSON

  2. 按下 Enter 键,获取结果并查看数据是否成功转换为JSON格式。
    Excel 使用VBA代码将Excel转换为JSON

代码说明

代码1

If rng.Columns.Count < 2 Then
        ExcelToJSON = CVErr(xlErrNA)
        Exit Function
End If

首先,该代码用于验证所选范围必须至少有两列才能进行Excel到JSON转换。如果不满足此条件,则会从该函数中退出。

代码2

Dim dataLoop, headerLoop As Long
' Get the first row of the Excel file as a header 
Dim headerRange As Range: Set headerRange = Range(rng.Rows(1).Address)

接下来我们创建了两个变量:dataLoop和headerLoop。dataLoop变量用于存储在Excel文件中的Excel数据,headerLoop用于存储列标题。这两个变量将在转换过程中使用。

代码3

' Count the number of columns of targeted Excel file
Dim colCount As Long: colCount = headerRange.Columns.Count

在这里,我们创建了一个变量 colCount。 我们使用这段代码来查找要将其数据转换为JSON格式的目标列的数量,该数据存储在Excel文件中。

代码4

Dim JSON As String: JSON = "["   
For dataLoop = 1 To rng.Rows.Count
       ' Skip the first row because it is used as header
        If dataLoop > 1 Then
             ' Start data row
             Dim jsonData As String: jsonData = "{"

现在,此代码开始从Excel文件创建JSON数据。这里,dataLoop变量在一个for循环中使用,从1到所选行的末尾。Excel文件数据的第一行将被跳过,因为在将Excel数据转换为JSON时,第一行始终被认为是标题。

JSON格式的数据将被放在花括号{}之间。

代码 5

            ' Loop through each column and combine with the header
            For headerLoop = 1 To colCount
                jsonData = jsonData & """" & headerRange.Value2(1, headerLoop) & """" & ":"
                jsonData = jsonData & """" & rng.Value2(dataLoop, headerLoop) & """"
                jsonData = jsonData & ","
            Next headerLoop            
            ' Strip out the comma in last value of each row
            jsonData = Left(jsonData, Len(jsonData) - 1)            
            ' End data row
            JSON = JSON & jsonData & "},"
        End If

循环将遍历每一列,并将列标题与行数据相结合。每个值将用逗号分隔。而这段代码( jsonData = Left(jsonData, Len(jsonData) – 1) )将跳过每行最后一个值后面的逗号。

在JSON文件格式中,每一行的数据将被大括号{}括起来。

代码6

    ' Strip out the last comma in last row of the Excel data
    JSON = Left(JSON, Len(JSON) - 1)    
    JSON = JSON & "]"    
    ExcelToJSON = JSON

所有连结的数据将被存储在一个 JSON name变量中,这个完整的数据将放置在[]方括号之间。转换后的JSON数据将显示在用户使用此用户定义的ExcelToJSON()函数的Excel单元格中。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程