VBA 는 엑셀 데이터 시트 를 JSON 파일 로 생 성 합 니 다.

3139 단어 excelvbajson
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 컨트롤 을 가 져 오 는 엑셀 은 좋 은 선택 입 니 다.생각 을 통 해 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

좋은 웹페이지 즐겨찾기