Вставка файла JSON в Excel, следуя моей структуре

#python #json #openpyxl

Вопрос:

Я пытаюсь сбросить этот файл JSON в свой файл Excel, созданный с помощью Openpyxl.

Вот пример моего файла JSON:

  [
  {
    "id": 3,
    "url": "https://www.immobiliare.it/annunci/p-161271/",
    "titolo": "Appartamenti e Attici di nuova costruzione in vendita a Roma",
    "prezzo": "da u20ac 165.000 - u20ac 254.000",
    "citta": "Roma",
    "zona": "Infernetto",
    "via": "Via Croviana, 89",
    "tipologia": "",
    "superficie": "",
    "posti_auto": "",
    "piano": "",
    "piani_edificio": "",
    "balcone": 0,
    "cantina": 0,
    "terrazza": 0,
    "giardino_privato": 0,
    "taverna": 0,
    "esposizione_esterna": 0
  },
  {
    "id": 10,
    "url": "https://www.immobiliare.it/annunci/88266101/",
    "titolo": "Trilocale via Scigliano, Morena, Roma",
    "prezzo": "u20ac 260.000u20ac 280.000(-7,1%)",
    "citta": "Roma",
    "zona": "Morena",
    "via": "Via Scigliano",
    "tipologia": "Appartamento",
    "superficie": "101 mu00b2",
    "posti_auto": "",
    "piano": "1u00b0",
    "piani_edificio": "1 piano",
    "balcone": 1,
    "cantina": 0,
    "terrazza": 0,
    "giardino_privato": 0,
    "taverna": 0,
    "esposizione_esterna": 1
  },
 

А вот скриншот того, где должны заканчиваться данные:Файл Excel

В основном то, что мне кажется трудным, — это точно сказать, куда идти и где размещать данные. Я подумал о процессе, и он должен в основном идти в таком порядке:

  • Для каждого объекта идентификатора данные идут по 1 на столбец, пока не достигнут следующего идентификатора.

Вот мой код:

     riga_dump, colonna_dump = 3, 2

    for value in self.json:
        cell = scheda_1.cell(row=riga_dump, column=colonna_dump)
        cell.alignment = Alignment(horizontal='center')
        cell.font = Font(color='00000000')
        cell.value = value
        colonna_dump  = 1
        if colonna_dump == 17:
            riga_dump  = 1
 

Проблема в том, что таким образом я пытаюсь поместить весь объект идентификатора в одну ячейку…

Комментарии:

1. Вам просто нужно преобразовать элементы JSON в списки.

Ответ №1:

Не уверен, правильно ли понимаю вашу проблему (так как я вообще не вижу никаких проблем, и это кажется неприятным, особенно учитывая отсутствие ответов). Поэтому, вероятно, все, что вам нужно, — это добавить внешний цикл для повторения объектов. Что-то вроде этого:

 riga_dump, colonna_dump = 3, 2

for obj in json:

    for value in obj:
        cell = scheda_1.cell(row=riga_dump, column=colonna_dump)
        cell.alignment = Alignment(horizontal='center')
        cell.font = Font(color='00000000')
        cell.value = value
        colonna_dump  = 1

    riga_dump  = 1
    colonna_dump = 2 # or = 0 ? it's hard to tell from your screenshot
 

Комментарии:

1. Привет и спасибо за ответ. Кроме того, извините за мой поздний ответ, я попробую это завтра утром, и я надеюсь, что это сработает. Еще раз спасибо!

2. Хорошо, это работает, я не мог дождаться, чтобы попробовать, хотя одна проблема в том, что он получает ключ, а не значение, связанное с ключом, есть идеи о том, как выбрать только значение?

3. Ну, это нужно изменить cell.value = value на cell.value = obj[value]

4. Это сработало, спасибо, и я отмечу ответ как правильный, вы действительно преподали мне хороший урок по JSON в Python, спасибо!