我经历过 将 Excel 表保存为 JSON 文件,它帮助我将 EXCEL 表转换为 JSON,但我希望向该 JSON 文件添加一些附加字段。
我询问以下信息第一张工作表
- 您的 ID :A001
- 姓名:我的名字
- 清单项目:2018 年 10 月
[我的第二张表]
此信息对于第二张表中输入的数据是通用的
在创建 JSON 文件时,我想在从 Sheet2 创建的每条 JSON 记录中“自动”添加以下 3 个字段(在 Sheet 1 中接受)
- 您的 ID :A001
- 姓名:我的名字
- 清单项目:2018 年 10 月
我正在使用以下 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
据我了解,您有 sheet1 和 sheet2 的 JSON 文件,并且想要将 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()
高血压
克里希纳