VBA将excel数据表生成JSON文件

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

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

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过程代码奉献给大家.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

  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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
VBA是Visual Basic for Applications的简称,它是一种编程语言,可以用于在Excel中自动化执行各种任务。通过使用VBA,可以实现从Excel中提取数据并自动生成Word文档的功能。 要通过VBA提取Excel数据并生成Word文档,可以按照以下步骤进行操作: 1. 打开Excel文件,选择包含要提取的数据的工作表。 2. 在Excel中创建一个VBA宏。可以通过按下Alt+F11键打开VBA编辑器,并在项目资源管理器中双击“Sheet1”(或包含数据的工作表)。 3. 在VBA编辑器中编写代码来提取Excel数据。可以使用循环语句来遍历所需的数据范围,并将数据存储在变量中。 4. 创建一个新的Word文档。可以使用`Documents.Add`方法创建一个新的文档对象。 5. 使用VBA代码将Excel数据写入Word文档。可以使用`Selection`对象或`Range`对象来粘贴数据到Word文档中的特定位置。 6. 格式化Word文档。可以使用VBA代码来设置字体、段落格式、表格等。例如,可以使用`Font`对象设置文本的字体和大小,并使用`ParagraphFormat`对象设置文本的对齐方式和行间距。 7. 保存并关闭Word文档。可以使用`SaveAs`方法将文档保存为指定的文件名和路径,并使用`Close`方法关闭文档。 8. 在VBA编辑器中运行宏。可以按下F5键或通过在Excel中分配一个快捷键来运行宏。 通过以上步骤,就可以利用VBA提取Excel数据并自动生成Word文档。这样可以方便快捷地将Excel中的数据转移到Word,节省了手动操作的时间和劳动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sinat_40572875

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值