Я прошел Сохранение листа Excel в виде файла JSON, что помогло мне преобразовать таблицу EXCEL в формат JSON, но я хотел бы добавить некоторые дополнительные поля в этот файл JSON.

Я прошу следующую информацию в первом листе

  1. Ваш ID: A001
  2. Имя: мое имя
  3. Элемент списка: октябрь-2018

[ Мой 2-й лист ]

Эта информация будет общей для данных, введенных на втором листе


При создании файла JSON я хочу добавить "Автоматически" следующие 3 поля (принято на листе 1) в каждую запись для JSON, который я создаю из листа Sheet2

  1. Ваш ID: A001
  2. Имя: мое имя
  3. Элемент списка: октябрь-2018

Я использую следующий код VBA для создания JSON

Public Sub xls2json()
    savename = "xls2json.json"
    Dim wkb As Workbook
    Dim wks As Worksheet
    Set wkb = ThisWorkbook
    Set wks = wkb.Sheets(2)
    lcolumn = wks.Cells(4, Columns.Count).End(xlToLeft).Column
    lrow = wks.Cells(Rows.Count, "A").End(xlUp).Row
    Dim titles() As String
    ReDim titles(lcolumn)
    For i = 1 To lcolumn
        titles(i) = wks.Cells(4, i) 'titles are taken from this row
    Next i
    json = "["
    dq = """"
    For J = 5 To lrow ' data picked from this row onwards
        For i = 1 To lcolumn
            If i = 1 Then
                json = json & "{"
            End If
            cellvalue = wks.Cells(J, i)
            json = json & dq & titles(i) & dq & ":" & dq & cellvalue & dq
            If i <> lcolumn Then
                json = json & ","
            End If
        Next i
        json = json & "}"
        If J <> lrow Then
             json = json & ","
        End If
     Next J
    json = json & "]"
    myFile = Application.DefaultFilePath & "\" & savename
    Open myFile For Output As #1
    Print #1, json
    Close #1
    a = MsgBox("Saved as " & savename, vbOKOnly)
End Sub

1 ответ1

-1

Как я понимаю, у вас есть JSON-файлы для sheel1 и sheet2, и вы хотите добавить столбцы из sheet2 в sheet1. Что-то вроде ниже.

0 > cat file1.json
[
  {
    "firstName": "Alice",
    "age": 22
  },
  {
    "firstName": "Bob",
    "age": 33
  }
]
0 > cat file2.json
[
  {
    "fullName": "Alice Alice"
  },
  {
    "fullName": "Bob Bob"
  }
]

чтобы получить что-то вроде ...

0 > python3 ./bla.py file1.json file2.json
[
    {
        "firstName": "Alice",
        "age": 22,
        "fullName": "Alice Alice"
    },
    {
        "firstName": "Bob",
        "age": 33,
        "fullName": "Bob Bob"
    }
]

Следующий код Python должен работать

import json, sys


def main():
    '''The Main'''

    data1 = json.load(open(sys.argv[1]))
    data2 = json.load(open(sys.argv[2]))

    assert (len(data1) == len(data2)), "Number of rows not equal"

    for i in range(len(data1)):
        for k in data2[i].keys():
            data1[i][k] = data2[i][k]

    print(json.dumps(data1, indent=4))


if __name__ == '__main__':
    main()

НТН

Кришна

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .