【问题标题】:vba convert msexcel table to json. Ending line not consistantvba 将 ms excel 表转换为 json。结尾线不一致
【发布时间】:2015-07-05 20:27:15
【问题描述】:

下面的子程序从以单元格(1,1)开始的 Excel 表创建一个 json 文件。问题是当我在 Visual Studio 中拖放生成的文件时,我收到以下消息:

以下文件中的行尾不一致。你想要 规范行尾?

我怎样才能使这个子产生一致的行尾?

Sub CreateWksJON(mywksht As Worksheet, NbofFields As Integer, NbofElements As Integer)
Dim FilePath As String
Dim fieldData As String
Dim i As Integer
Dim j As Integer
Dim objStream
Set objStream = CreateObject("ADODB.Stream")

objStream.Charset = "utf-8"
objStream.Open


FilePath = "E:\Git\ACWB-MSEcelWorksheetTOJson\" & mywksht.Name & ".json"

'Open FilePath For Output As #1


fieldData = "{" & Chr(10) & Chr(13) & """" & mywksht.Name & """" & ": {" & Chr(10) & Chr(13)



objStream.writetext fieldData

    fieldData = ""
For j = 1 To NbofFields
     i = 1

     fieldData = """" & mywksht.Cells(i, j).Value & """" & ": ["

    For i = 2 To NbofElements - 2
        If IsNumeric(mywksht.Cells(i, j).Value) Then

            fieldData = fieldData & mywksht.Cells(i, j).Value & ","
        Else
            fieldData = fieldData & """" & mywksht.Cells(i, j).Value & """" & ","

        End If
    Next i
        'add the last element of the field

        If IsNumeric(mywksht.Cells(i + 1, j).Value) Then

            fieldData = fieldData & mywksht.Cells(i + 1, j).Value
        Else
            fieldData = fieldData & """" & mywksht.Cells(i + 1, j).Value & """"

        End If


        If j = NbofFields Then

            fieldData = fieldData & "]" & Chr(10) & Chr(13)
        Else

            fieldData = fieldData & "]," & Chr(10) & Chr(13)
        End If

        objStream.writetext fieldData


Next j

objStream.writetext "}" & Chr(10) & Chr(13) & "}" & Chr(10) & Chr(13)

objStream.SaveToFile FilePath, 2


End Sub

这是桌子

Envelpope_ID    CG_MAC  CG_Imp  CG_SI   Weight_Imp  Weight_SI
1         20    875     22.225  71700   32522.58942
1         20    875     22.225  98000   44452.0748
1         28    900     22.86   129720  58840.03207
1         38    1000    25.4    129720  58840.03207
1         38    1000    25.4    119840  54358.53718
1         43    1200    30.48   102200  46357.16372
1         43    1200    30.48   94000   42637.7044
1         34    950     24.13   71700   32522.58942
1         20    875     22.225  71700   32522.58942
2         20    875     22.225  71700   32522.58942
2         20    875     22.225  98000   44452.0748
2         28    900     22.86   125000  56699.075
2         38    1000    25.4    125000  56699.075
2         38    1200    30.48   102200  46357.16372
2         43    1200    30.48   94000   42637.7044
2         43    950     24.13   71700   32522.58942
2         34    875     22.225  71700   32522.58942

【问题讨论】:

  • 也许将 Chr(10) & Chr(13) 更改为 vbCrLf。我很好奇您使用“ADODB.Stream”还是使用“Scripting.FileSystemObject”来创建 Scripting.TextStream。我并不是说这是错误的,只是与我习惯做的不同。 :)
  • 我是新手,我在网上找到了一个例子。我会尝试 Scripting.FileSystemObject。
  • 确实测试了“Scripting.FileSystemObject”。它也可以正常工作。但是根据这篇帖子link,“Scripting.FileSystemObject”不支持“utf-8”字符集。

标签: json excel vba


【解决方案1】:

您可以更改为 VbCrLf,但如果您按照正确的顺序进行字符命名,则应该可以使用。

Cr 是 ASCII(13) 而 Lf 是 ASCII(10) 所以你的行尾应该是

chr(13)&chr(10)

【讨论】:

    猜你喜欢
    • 2016-09-23
    • 1970-01-01
    • 2019-12-12
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    相关资源
    最近更新 更多