Tabela Excel para JSON com campos adicionais de outra planilha

0

Eu passei por Salvando planilha do Excel como arquivo JSON , o que me ajudou a converter Tabela EXCEL para JSON, mas desejo adicionar alguns campos adicionais a este arquivo JSON.

Estouperguntandoasseguintesinformaçõesnaprimeiraplanilha

  1. SeuID:A001
  2. Nome:meunome
  3. Itemdalista:outubrode2018

[Minhasegundafolha]

Estainformaçãoserácomumparaosdadosinseridosna2ªfolha

DuranteacriaçãodoarquivoJSON,desejoadicionar"Automaticamente" os três campos a seguir (aceitos na Folha 1) em cada registro para JSON que estou criando a partir de Sheet2

  1. Seu ID: A001
  2. Nome: meu nome
  3. Item da lista: outubro de 2018

Estou usando o seguinte código do VBA para criar o 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
    
por Prajakta Software 22.09.2018 / 04:42

1 resposta

-1

Pelo que entendi, você tem arquivos JSON para sheel1 e sheet2 e deseja adicionar colunas de sheet2 a sheet1. Algo como abaixo.

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

para obter algo como ...

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

O código do Python deve funcionar

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()

HTH

Krishna

    
por 22.09.2018 / 08:23