Как перевести JSON в XLSX без ошибок? Онлайн-конвертер и советы

💻 IT и кодОбновлено: 13 июля 2026 г.5 мин чтения
Представьте: у вас есть JSON-файл с сотнями записей, а заказчик просит таблицу XLSX. Руками не перебить, готовые конвертеры портят кодировку. Разберём лучшие способы конвертации JSON в XLSX: от Python-скриптов до готовых онлайн-инструментов, с примерами кода и подводными камнями.
⚡ Коротко: главное
  • Python-библиотека pandas с openpyxl позволяет конвертировать JSON в XLSX за 3 строки кода.
  • Онлайн-конвертер JSON в XLSX поддерживает глубоко вложенные JSON-структуры до 10 МБ.
  • При конвертации вложенных JSON-объектов без flatten столбцы превращаются в строки с JSON-строками — это частая ошибка.
  • Формулы и условное форматирование не переносятся из JSON — XLSX создаётся как простые данные.

1. Базовый способ: Python + pandas

Самый гибкий способ — написать скрипт на Python. Установите две библиотеки:

pip install pandas openpyxl

Пример для плоского JSON-массива (список объектов с одинаковыми ключами):

import pandas as pd
import json

with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

df = pd.json_normalize(data)
df.to_excel('output.xlsx', index=False, engine='openpyxl')

q — ключевой параметр: index=False убирает лишний столбец с номерами строк. engine='openpyxl' обязателен для записи .xlsx.

Если ваш JSON — один объект, заверните его в список: [data].

Для вложенных структур используйте json_normalize с параметром record_path и meta. Подробнее — в разделе 4.

2. Работа с вложенными JSON-объектами (flatten)

Частая проблема: JSON содержит вложенные объекты (например, адрес внутри пользователя). Без flatten каждый вложенный объект станет строкой с {'street': '...', 'city': '...'} в одной ячейке — непригодно для анализа.

Решение — использовать pd.json_normalize:

import pandas as pd
import json

with open('nested.json') as f:
    data = json.load(f)

df = pd.json_normalize(data, sep='_')
df.to_excel('flat.xlsx', index=False)

Параметр sep='_' определяет разделитель между уровнями: address_street.

Для массивов внутри JSON укажите record_path (путь к массиву) и meta (поля из родительского объекта):

df = pd.json_normalize(data, record_path='items', meta=['id', 'name'])

Если структура глубже 2 уровней — лучше сначала написать рекурсивный flatten, либо воспользоваться онлайн-инструментом JSON в XLSX, который делает flatten автоматически.

3. Обработка массивов и неоднородных данных

Когда JSON содержит массивы разной длины или неоднородные объекты (разные ключи), pandas заполняет пропуски NaN. Это нормально, но может быть нежелательно.

Пример: один пользователь имеет 3 телефона, другой — 1. После flatten для короткого массива появятся пустые ячейки.

Как избежать пустых ячеек?

  • Разделить на отдельные строки: используйте explode для массива. Например, df.explode('phones') создаст по строке на каждый телефон.
  • Объединить в строку: df['phones'] = df['phones'].apply(lambda x: '; '.join(x))

Для неоднородных объектов принудительно приведите к единой схеме: df = pd.DataFrame(data).fillna('')

Совет: если данные не влезают в Excel (более 1 048 576 строк), используйте формат .csv или разделите на несколько листов с pd.ExcelWriter.

4. Команды и параметры pandas для конвертации

КомандаПараметрыОписание
pd.json_normalizerecord_path, meta, sepРазворачивает вложенные JSON в плоский DataFrame
df.to_excelindex, engine, sheet_nameЗаписывает DataFrame в Excel-файл
df.explode-Преобразует каждый элемент списка в отдельную строку
pd.read_jsonorientЧитает JSON в DataFrame (для простых структур)

Параметр orient в pd.read_json бывает: 'records' (список объектов), 'index' (словарь с индексами), 'columns' (словарь столбцов). Для большинства случаев используйте orient='records'.

Пример с read_json:

df = pd.read_json('data.json', orient='records')
df.to_excel('output.xlsx', index=False)

Но учтите: read_json не умеет flatten, поэтому лучше загружать через json.load и затем json_normalize.

Пошаговая конвертация JSON в XLSX через Python
  1. 1
    Загрузка JSON

    Открыть файл с помощью json.load

  2. 2
    Нормализация

    Преобразовать в DataFrame через json_normalize

  3. 3
    Чистка данных

    Заполнить NaN, объединить массивы при необходимости

  4. 4
    Запись в Excel

    to_excel с openpyxl и index=False

  5. 5
    Проверка

    Открыть Excel, проверить столбцы и строки

Классический pipeline для плоского JSON

5. Онлайн-конвертеры: когда код не подходит

Скрипт не всегда удобен: нет Python под рукой, файл на телефоне, срочно нужно одному человеку. Тут выручают онлайн-сервисы.

Наш сайт предлагает несколько инструментов:

  • JSON в XLSX — прямой конвертер с flatten и поддержкой UTF-8
  • CSV в XLSX — если у вас уже CSV
  • JSON в CSV — промежуточный шаг для больших файлов
  • XLSX в CSV — обратная конвертация

Онлайн-конвертеры обычно автоматически определяют разделители и кодировку, но у них есть ограничения: размер файла (часто до 10-50 МБ) и конфиденциальность данных — не загружайте чувствительные данные на непроверенные сайты.

Наш конвертер JSON в XLSX обрабатывает файлы до 10 МБ и не сохраняет данные на сервере после конвертации.

6. Сравнение Python vs онлайн-конвертер

КритерийPythonОнлайн-конвертер
Скорость настройки5-10 минут1-2 минуты
ГибкостьПолный контрольОграниченная
Размер данныхБез ограниченийДо ~10 МБ
КонфиденциальностьПолная (локально)Риск утечки
Flatten автоНастраиваетсяАвтоматический

Вывод: для разовых небольших задач (до 10 МБ, несекретные данные) — онлайн. Для регулярной обработки, больших объёмов или конфиденциальной информации — Python.

Кстати, если вам нужно сначала привести JSON к CSV (например, для загрузки в Excel как CSV), используйте JSON в CSV, а потом CSV в XLSX.

7. Подводные камни и частые ошибки

  • Кодировка: русские буквы превращаются в кракозябры. Решение: всегда указывайте encoding='utf-8' при открытии файла и при записи.
  • Огромные файлы: Excel не поддерживает более 1 048 576 строк и 16 384 столбцов. Python выдаст ошибку при попытке записать больший DataFrame. Используйте .csv или разбивайте на листы.
  • Null и NaN: пустые значения в Excel отображаются как пустые ячейки или #N/A. Можно заполнить fillna('').
  • Формулы и стили: конвертация чистых данных не переносит формулы. Если нужны формулы — добавляйте их после конвертации средствами Excel.
  • Вложенные объекты: без flatten вы получите ячейки с содержимым типа {'a':1} — бесполезно.
Всегда проверяйте результат конвертации на небольшом тестовом JSON перед обработкой большого файла.

8. Отладка: что делать, если конвертация не удалась

  1. Проверьте JSON на валидность — используйте JSONLint (не наш домен, но доверенный).
  2. Убедитесь, что JSON — массив объектов, а не один объект. Если это объект, оберните его в [...].
  3. Посмотрите структуру в Python: выведите первые записи print(data[:2]).
  4. Попробуйте pd.json_normalize с повышением разупрощения: если не работает, распечатайте ключи и решите, какие поля нужны.
  5. Используйте онлайн-инструмент для отладки: загрузите тот же JSON в JSON в XLSX и скачайте результат — если он корректен, проблема в вашем скрипте.
  6. Проверьте установку библиотек: import pandas и import openpyxl без ошибок.

Если после всех шагов проблема осталась — опишите структуру JSON в техподдержку (пример строки).

🧮 Посчитайте сами — инструменты по теме

🧭 Разделы по теме

Частые вопросы

Как конвертировать JSON в XLSX онлайн бесплатно?

Используйте наш инструмент JSON в XLSX. Загрузите файл или вставьте текст, нажмите «Конвертировать» и скачайте результат. Бесплатно, до 10 МБ.

Как преобразовать вложенный JSON в плоскую таблицу Excel?

Python: используйте pd.json_normalize с параметрами record_path и meta. В онлайн-конвертере flatten выполняется автоматически.

Что делать, если после конвертации русские буквы отображаются как '?' или 'Ролы ?

Проверьте кодировку: при чтении JSON укажите encoding='utf-8'. В онлайн-конвертере убедитесь, что выбрана UTF-8.

Можно ли конвертировать JSON в XLSX без Python?

Да, через онлайн-сервисы: JSON в XLSX или конвертеры в Excel (данные > получить данные > из JSON).

Как обработать JSON с массивом в Excel — чтобы каждый элемент массива был в отдельной строке?

В Python используйте df.explode('array_column'). В онлайн-конвертере это делается автоматически или выберите опцию «развернуть массивы».

Есть ли ограничение на размер JSON при конвертации в XLSX?

Онлайн-инструменты обычно ограничены 5-10 МБ. Python без ограничений, но Excel не поддерживает более 1 048 576 строк.

Как сохранить форматирование (цвета, шрифты) из JSON при конвертации?

JSON не содержит информации о форматировании. После конвертации добавьте стили вручную в Excel или с помощью openpyxl.

Чем отличается конвертация JSON в XLSX от JSON в CSV?

XLSX — бинарный формат Excel с поддержкой листов, формул, стилей. CSV — текстовый, проще, но без форматирования. Для больших данных удобнее CSV.

Источники и нормативные документы

  1. pandas документация — json_normalize
  2. openpyxl документация
  3. JSONLint — валидатор JSON

Ещё по теме «IT и код»