VBA将excel数据表生成JSON文件

   2015-09-24 0
核心提示:本文给大家汇总介绍了几种使用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

 
标签: excel vba json
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Perl操作Mysql数据库 perl操作excel
    一. 安装DBI模块步骤1:从TOOLS栏目中下载DBI.zip,下载完后用winzip解开到一个temp目录,共有三个文件:ReadmeDBI.ppdDBI.tar.gz步骤2: 在DOS窗口下,temp目录中运行下面的DOS命令:ppm install DBI.ppd 如果提示无效命令,可在perl/bin目录下运行 二. 安装DBD
    02-09
  • C#/VB.NET 获取Excel中图片所在的行、列坐标位置
    C#/VB.NET 获取Excel中图片所在的行、列坐标位
    本文以C#和vb.net代码示例展示如何来获取Excel工作表中图片的坐标位置。这里的坐标位置是指图片左上角顶点所在的单元格行和列位置,横坐标即顶点所在的第几列、纵坐标即顶点所在的第几行。下面是获取图片位置的详细方法及步骤。【程序环境】按照如下方法来引
    02-09
  • python 使用pandas,完成对excel的操作: 遍历
    excel有针对偏度的计算函数 skew(), 但是不清楚怎么使用excel进行遍历, 数据量很大。尝试使用python进行解决。第一次学习python,没想到了在克服安装各种包的难过之后,居然成功实现了。python3.3:#this is a test case# -*- coding: gbk -*-print("hello py
    02-09
  • Delphi操作Excel(2) ---Stringgrid导出到Excel
    最近编了一个小软件,需要将Stringgrid中的内容导出到Excel中。由于使用的是Delphi2010 + Office2010,中间有点小曲折,现把代码贴出来,供参考。代码procedure TFormMain.btn3Click(Sender: TObject);varExcelApp,workbook,sheet:Variant;begindlgSavedlg1.F
    02-09
  • csv,txt,excel文件之间的转换,perl脚本
    最近接触一些需要csv,txt,excel文件之间的转换,根据一些网上搜索加上自己的改动,实现自己想要的结果为主要目的,代码的出处已经找不到了,还请见谅,以下主要是针对csvexcel 和txtexcel写的perl脚本。主要用到的模块是: Text::CSVSpreadsheet::WriteExcel
    02-09
  • 使用Perl提取Excel中的IO_MUX perl处理excel内容
    使用Perl提取Excel中的IO_MUX perl处理excel内
    关键问题提取数据格式化输出循环嵌套数据结构构建坐标映射,逆向提取关键字描述在IC集成中,我们使用Excel表格规划设计的IC引脚功能映射需要转化到Verilog层次,这个过程耗时耗力,但其中有一些规律,可以通过Perl将其格式化提取出部分可用的信息,应用得当可
    02-09
  • MATLAB读写Excel文件中的数据
    读取:%读取filename文件中指定表的数据,存入dataRead矩阵中dataRead=xlsread('filename.xls',sheet); 写入:%将矩阵dataWrite中的数据写入filename表中,从C1单元格开始xlswrite('filename.xls',dataWrite','C1'); 作者:耑新新,发布于  博客园转载请
    02-09
  • R语言学习笔记之: 论如何正确把EXCEL文件喂给R
     博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html  ----前言: 应用背景兼吐槽继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯。这次的主题是论R与excel的结合,又称 论如何正确把EXCEL文件喂给R处理 分为: 1、 xlsx包安装及注
    02-09
  • R语言使用过程中出现的问题--读取EXCEL文件
    方法一:按照R导论中的方法,使用RODBC包,library(RODBC)channel-odbcConnectExcel("file.xlsx")da2-sqlFetch(channel,"Sheet1")odbcClose(channel)结果:未能成功,原因是odbcConnectExcel is only usable with 32-bit Windows 即只能在32位的电脑中使用,6
    02-09
  • [译] Ruby如何访问Excel文件
    [译] Ruby如何访问Excel文件
     BY: MATT NEDRICH   翻译:佣工7001     本文中,我将会评判几种Ruby语言访问Excel文件的库。我将要讨论针对不同格式的Excel文件访问的现有的几个Ruby库。本文中更多地聚焦于读取Excel文件,但是也对与更改/写入Excel文件稍作了些讨论。如果你迫不及
    02-09
点击排行