VBA将excel数据表生成JSON文件

 更新时间:2015年09月14日 08:55:51   投稿:hebedich  
本文给大家汇总介绍了几种使用VBA处理EXCEL并生成JSON文件的方法和思路,非常的实用,有需要的小伙伴可以参考下。

ADODB.Stream创建UTF-8+BOM编码的文本文件。

然后遍历数据区,格式化数据,输出即可。

小数据还行,大数据没测试。

另,使用fso创建的文本文件编码为ANSI,ajax解析json时出现乱码无法正常解析。

Sub ToJson() '创建UTF8文本文件
 myrange = Worksheets("sheet1").UsedRange '通过有效数据区来选择数据
 'myrange = ActiveWorkbook.Names("schoolinfo").RefersToRange '通过定义的名称来选择数据
 'myrange = Range(Worksheets("sheet1").Range("a1").End(xlDown), Worksheets("sheet1").Range("a1").End(xlToRight)) '通过标题行的最大行最大列来选择数据
 
Total = UBound(myrange, 1) '获取行数
Fields = UBound(myrange, 2) '获取列数
 
   Dim objStream As Object
   Set objStream = CreateObject("ADODB.Stream")
   
   With objStream
      .Type = 2
      .Charset = "UTF-8"
      .Open
      .WriteText "{""total"":" & Total & ",""contents"":["
   
      For i = 2 To Total
        .WriteText "{"
        For j = 1 To Fields
          .WriteText """" & myrange(1, j) & """:""" & Replace(myrange(i, j), """", "\""") & """"
           If j <> Fields Then
            .WriteText ","
           End If
        Next
        If i = Total Then
            .WriteText "}"
        Else
            .WriteText "},"
        End If
      Next
 
      .WriteText "]}"
      .SaveToFile ActiveWorkbook.FullName & ".json", 2
   End With
   Set objStream = Nothing
End Sub

最近在写一网站网页,需要从后台ASP网页查询到的MYSQL记录集返回给前台ASP网页,我们知道AJAX是无力从后台返回数据库记录集给前台网页的.

查阅大量资料,就目前而言记录集转换成JSON格式流,再由前台VBA导入WEBoffice控件的excel是个不错的选择.经过些思考,现将function过程代码奉献给大家.

    Function GetJSON(Rs)
    Dim JSON  
    dim returnStr 
    dim i
    dim oneRecord   
    if Rs.eof=false and Rs.Bof=false then
    returnStr="{ "&chr(34)&"records"&chr(34)&":["    
    while Rs.eof=false
    
     for i=0 to Rs.Fields.Count -1
      oneRecord=oneRecord & chr(34) & Rs.Fields(i).Name & chr(34) &":" 
      oneRecord=oneRecord & chr(34) & Rs.Fields(i).Value & chr(34) &","
     Next
     oneRecord=left(oneRecord,InStrRev(oneRecord,",")-1)
     oneRecord=oneRecord & "},"
     returnStr=returnStr  & oneRecord
     Rs.MoveNext
    Wend
    returnStr=left(returnStr,InStrRev(returnStr,",")-1)
    returnStr=returnStr & "]}"
    end if 
    GetJSON=returnStr   
  End Function

相关文章

  • VBA将excel数据表生成JSON文件

    VBA将excel数据表生成JSON文件

    本文给大家汇总介绍了几种使用VBA处理EXCEL并生成JSON文件的方法和思路,非常的实用,有需要的小伙伴可以参考下。
    2015-09-09
  • VBA实现全文件快速替换的示例代码

    VBA实现全文件快速替换的示例代码

    要想一下子就替换掉很多个WORD文档中的内容,我们可以使用VBA的办法,本文主要介绍了VBA实现全文件快速替换的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • UserAccessList 集合的功能(VBA)

    UserAccessList 集合的功能(VBA)

    可用 ProtectedRange 对象的 Users 属性返回一个 UserAccessList 集合。
    2009-07-07
  • 当编辑框内容改变 对应的单元格也随着改变vba代码

    当编辑框内容改变 对应的单元格也随着改变vba代码

    当编辑框内容改变 对应的单元格也随着改变vba代码
    2009-07-07
  • VBA数组去重(字典去重多种方法+数组去重2种方法)

    VBA数组去重(字典去重多种方法+数组去重2种方法)

    本文主要介绍了VBA数组去重(字典去重多种方法+数组去重2种方法),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • excel vba 高亮显示当前行代码

    excel vba 高亮显示当前行代码

    用条件格式设置高亮显示当前行,难的是如何确定当前行。用VBA就很简单,鼠标右击工作表标签,选择“查看代码”,将下面的代码粘贴到VBE窗口中
    2009-07-07
  • VBA中的循环代码的使用

    VBA中的循环代码的使用

    本文主要介绍了VBA中的循环代码的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • VBA UsedObjects 集合用法

    VBA UsedObjects 集合用法

    可用 Application 对象的 UsedObjects 属性返回一个 UsedObjects 对象。
    2009-07-07
  • VBA工程加密PJ方式(两种)

    VBA工程加密PJ方式(两种)

    今天遇到一个excel小工具感觉不错,想研究研究代码,竟然有密码,我就不淡定了。网上找了找代码,改了一下就OK了。接下来通过本文给大家分享两种方式破解VBA工程加密,需要的朋友参考下吧
    2021-12-12
  • Excel VBA按列拆分工作表和工作簿的实现

    Excel VBA按列拆分工作表和工作簿的实现

    表格拆分是常见的数据处理,本文主要介绍了Excel VBA按列拆分工作表和工作簿的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01

最新评论