Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

xlsx2json# Описание скрипта для обновления data.json на основе данных из Excel

Данный пример демонстрирует, как можно:

  1. Прочитать Excel-файл, содержащий ФИО и булевые значения (True/False).
  2. Получить на основании этой информации словарь соответствия ({ФИО: True/False}).
  3. Загрузить структуру данных из data.json.
  4. Рекурсивно обойти JSON и обновить поле visible для тех записей, у которых name совпадает со значениями из Excel.
  5. Сохранить результат в новый JSON-файл.

Структура репозитория

├── data.json             # Пример входного JSON
├── source.xlsx           # Пример Excel-файла
├── README.md             # Вы читаете этот файл
└── update_data.py        # Скрипт Python

Предварительные требования

  • Python 3.7+
  • Установленные библиотеки:
    • pandas
    • openpyxl (если используете Excel-файлы в формате .xlsx)
    • Желательно иметь pip install pandas openpyxl

Настройка

В начале скрипта update_data.py находятся переменные, которые вы можете изменить под свой случай:

########################################
# Конфигурация (измените под себя)
########################################
EXCEL_FILE_PATH = 'source.xlsx'        # Путь к Excel-файлу
EXCEL_SHEET_NAME = 'Sheet1'            # Название листа Excel
EXCEL_COLUMN_FIO = 'ФИО'               # Имя столбца с ФИО
EXCEL_COLUMN_VISIBLE = 'VisibleFlag'   # Имя столбца с флагом (True/False)

JSON_SOURCE_PATH = 'data.json'         # Путь к входному JSON
JSON_OUTPUT_PATH = 'data_updated.json' # Путь к результату

# Ключ, в котором хранится ФИО в JSON
JSON_NAME_KEY = 'name'

# Ключ, которое нужно обновить в JSON
JSON_VISIBLE_KEY = 'visible'
########################################

Обратите внимание на:

  • EXCEL_FILE_PATH – путь к Excel-файлу.
  • EXCEL_SHEET_NAME – название листа (если у вас в книге несколько листов).
  • EXCEL_COLUMN_FIO – название столбца, где указано ФИО.
  • EXCEL_COLUMN_VISIBLE – название столбца, где указаны флаги (True/False).
  • JSON_SOURCE_PATH – путь к исходному JSON.
  • JSON_OUTPUT_PATH – путь, по которому сохранить результат.
  • JSON_NAME_KEY – ключ, по которому в JSON хранится фамилия/ФИО.
  • JSON_VISIBLE_KEY – ключ, который нужно обновить (чаще всего visible).

Формат входных данных

Excel

В Excel-файле (в листе Sheet1) ожидается как минимум два столбца:

  1. ФИО – строка (например, Иванов Иван Иванович).
  2. VisibleFlag (или любое другое имя, заданное в EXCEL_COLUMN_VISIBLE) – может быть:
    • Булевое значение True/False (в формате Excel);
    • Текст true / false / 1 / 0 / да / нет и т. д. (конвертируются в True/False автоматически).

Пример:

ФИО VisibleFlag
Иванов Иван Иванович True
Петров Пётр Петрович false
Сидорова Анна Ивановна да

JSON

В data.json на некотором уровне вложенности (вполне могут быть массивы и объекты внутри) присутствуют поля name и visible. Пример:

{
  "id": 1001,
  "name": "Иванов Иван Иванович",
  "visible": true,
  "children": [
    {
      "id": 2001,
      "name": "Сидорова Анна Ивановна",
      "visible": false
    },
    {
      "id": 2002,
      "name": "Петров Пётр Петрович",
      "visible": true
    }
  ]
}

Скрипт будет искать совпадения для поля name (или другого ключа, заданного в JSON_NAME_KEY) со значениями из вашего Excel.

Запуск скрипта

  1. Убедитесь, что у вас установлен Python 3, а также модули pandas и openpyxl (для .xlsx):
    pip install pandas openpyxl
  2. Отредактируйте в update_data.py конфигурационные переменные под свои файлы и столбцы.
  3. Запустите скрипт:
    python update_data.py
  4. После выполнения в консоли появится сообщение вида:
    Файл data.json успешно обновлён и сохранён в data_updated.json
    
  5. Проверьте, что создан файл data_updated.json с обновлёнными значениями visible.

Принцип работы

  1. Чтение Excel – при помощи pandas.read_excel() формируется DataFrame, из которого собирается словарь вида {ФИО: True/False}.
  2. Загрузка JSON – в скрипте используется стандартный модуль json, загружается содержимое data.json.
  3. Рекурсивный обход – функция update_visibility_in_data() проходит по всем уровням структуры JSON (словарям и спискам). Когда встречает ключ name (определённый в JSON_NAME_KEY), проверяет, есть ли это значение в словаре fio_to_visibility_map. Если есть – обновляет соответствующий ключ visible (определённый в JSON_VISIBLE_KEY) значением True или False из Excel.
  4. Сохранение – результат рекурсивного обхода записывается в data_updated.json.

Возможные доработки

  • При необходимости можно изменить логику сопоставления имён (например, если в Excel хранятся только фамилии, а в JSON – полные ФИО).
  • Можно расширять список строк, которые будут считаться True или False (например, добавить on, off).
  • Если поля для обновления находятся под другими ключами или на разных уровнях вложенности, нужно скорректировать функцию update_visibility_in_data().

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages