Экспорт диапазона ячеек в данные JSON - PullRequest
0 голосов
/ 01 июля 2019

Я использую эту процедуру для экспорта диапазона ячеек в JSON.

Sub export_json(mysheet As Worksheet, myrange As String)
Dim fs As Object
Dim jsonfile
Dim rangetoexport As Range
Dim rowcounter As Long
Dim columncounter As Long
Dim linedata As String
Dim path As String
Dim fname As String

Set rangetoexport = mysheet.Range(myrange)

path = ThisWorkbook.path & "\"
fname = clean_filename(myrange, "") & ".json"

Set fs = CreateObject("Scripting.FileSystemObject")
Set jsonfile = fs.CreateTextFile(path & fname, True)

linedata = "{""Output"": ["
jsonfile.WriteLine linedata
For rowcounter = 2 To rangetoexport.Rows.Count
    linedata = ""
    For columncounter = 1 To rangetoexport.Columns.Count
        linedata = linedata & """" & rangetoexport.Cells(1, columncounter) & """" & ":" & """" & rangetoexport.Cells(rowcounter, columncounter) & """" & ","
    Next
    linedata = Left(linedata, Len(linedata) - 1)
    If rowcounter = rangetoexport.Rows.Count Then
        linedata = "{" & linedata & "}"
    Else
        linedata = "{" & linedata & "},"
    End If

    jsonfile.WriteLine linedata
Next
linedata = "]}"
jsonfile.WriteLine linedata
jsonfile.Close

Set fs = Nothing
End Sub

Однако, если значение ячейки содержит двойные кавычки ", вывод файла JSON становится поврежденным. Есть идеи, как это исправить?

1 Ответ

1 голос
/ 01 июля 2019

Вы должны избегать двойных кавычек с косой чертой.

For columncounter = 1 To rangetoexport.Columns.Count
    linedata = linedata & """" & Replace(rangetoexport.Cells(1, columncounter), """", "\""") & """" & ":" & """" _
    & Replace(rangetoexport.Cells(rowcounter, columncounter), """", "\""") & """" & ","
Next

Этот ответ дает более подробную информацию о побеге json. https://stackoverflow.com/a/19176131/7182460

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...