Таблица Excel в JSON с дополнительными полями из другого листа
Я прошел Сохранение листа Excel в виде файла JSON, что помогло мне преобразовать таблицу EXCEL в JSON, но я хотел бы добавить некоторые дополнительные поля в этот файл JSON.
Я спрашиваю следующую информацию в первом листе
- Ваш ID: A001
- Имя: мое имя
- Элемент списка: октябрь-2018
[ Мой второй лист ]
Эта информация будет общей для данных, введенных на втором листе
При создании файла JSON я хочу добавить "Автоматически" следующие 3 поля (приняты на листе 1) в каждую запись для JSON, который я создаю из листа Sheet2
- Ваш ID: A001
- Имя: мое имя
- Элемент списка: октябрь-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 ответ
Как я понимаю, у вас есть 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()
НТН
Кришна