Конвертируйте EXCEL в JSON: способы, качество и онлайн-сервис
- Онлайн-конвертер Excel в JSON справляется за 3 клика, но для больших файлов (>10 МБ) лучше использовать скрипты.
- Python-библиотека openpyxl (v3.1.5, 2026) корректно читает таблицы, формулы, даты и объединённые ячейки.
- Обработка пустых ячеек и типов данных: по умолчанию цифры без кавычек, строки — в кавычках, даты — в ISO 8601.
- Для вложенных структур (например, сводные таблицы) требуется предварительная нормализация Excel-файла.
- Конвертация CSV — промежуточный этап: используйте CSV в JSON для быстрого экспорта без формул.
1. Зачем вообще конвертировать Excel в JSON?
Большинство бизнес-данных хранятся в Excel: отчёты, прайсы, каталоги. JSON — формат обмена данными в API, веб-приложениях и базах данных (MongoDB). Задача: превратить табличную структуру (строки, колонки) в иерархическую.
Важно: Excel содержит не только данные, но и форматирование, формулы, макросы. При конвертации всё это теряется — извлекаются только значения ячеек.
Основные сценарии:
- Загрузка товаров из XLSX в интернет-магазин;
- Импорт отчёта в веб-дашборд;
- Передача табличных данных микросервисам.
2. Онлайн-конвертер — быстрый путь
Если нужно единоразово сконвертировать небольшой файл (до 10 МБ) — используйте Excel в JSON на нашем сайте. Алгоритм:
- Загрузите файл .xlsx или .xls;
- Укажите лист и диапазон (опционально);
- Настройте: первая строка как ключи, разделитель для вложенных колонок;
- Нажмите «Конвертировать» — получите JSON.
Пример: файл orders.xlsx с колонками id, date, customer, total. Результат:
[
{"id": 1, "date": "2026-07-10", "customer": "Иван", "total": 1500},
{"id": 2, "date": "2026-07-11", "customer": "Пётр", "total": 2300}
]Бонус: поддерживаются файлы до 10 МБ, все данные обрабатываются на клиенте — приватность сохранена.
3. Конвертация через Python (openpyxl)
Для регулярных задач или больших файлов используйте Python. Установите библиотеку:
pip install openpyxlБазовый код:
import json
import openpyxl
workbook = openpyxl.load_workbook('data.xlsx', data_only=True)
sheet = workbook.active
# Первая строка — ключи
keys = [cell.value for cell in sheet[1]]
rows = []
for row in sheet.iter_rows(min_row=2, values_only=True):
record = {}
for idx, value in enumerate(row):
if value is not None:
record[keys[idx]] = value
rows.append(record)
with open('output.json', 'w', encoding='utf-8') as f:
json.dump(rows, f, ensure_ascii=False, indent=2)Параметр data_only=True — получаем вычисленные значения формул, а не сами формулы. values_only=True — возвращает значения, а не объекты ячеек.
- 1Установка openpyxl
pip install openpyxl
- 2Загрузка файла
workbook = openpyxl.load_workbook('data.xlsx', data_only=True)
- 3Чтение заголовков
keys = [cell.value for cell in sheet[1]]
- 4Обход строк
for row in sheet.iter_rows(min_row=2, values_only=True)
- 5Формирование записей
запись в dict с проверкой None
- 6Сериализация в JSON
json.dump с ensure_ascii=False и indent=2
- 7Проверка результата
откройте output.json и проверьте типы
4. Работа с формулами и датами
Excel-формулы (например, =SUM(A1:A10)) в JSON не нужны — нужны результаты. В openpyxl параметр data_only=True читает кешированные значения. Но если файл не был открыт в Excel после изменения, кеш может отсутствовать. Решение: открыть файл в Excel и сохранить, либо использовать библиотеку formulas для вычислений.
Даты: Excel хранит даты как числа (серийный номер). openpyxl автоматически конвертирует в объект datetime. При сериализации в JSON через json.dumps даты нужно преобразовать в строку, например ISO 8601:
import datetime
class DateTimeEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, (datetime.datetime, datetime.date)):
return obj.isoformat()
return super().default(obj)
json.dumps(rows, cls=DateTimeEncoder, ensure_ascii=False, indent=2)Результат: дата в формате "2026-07-11T00:00:00".
✅ Чек-лист для качественной конвертации
0 из 8
5. Пустые ячейки, объединённые ячейки и специальные символы
Пустые ячейки: в JSON лучше не включать ключи с null. В коде выше мы проверяем if value is not None. Если нужно сохранить пустые строки — проверяйте иначе.
Объединённые ячейки: openpyxl читает только первую ячейку объединённого блока, остальные — None. Чтобы дублировать значение, используйте merged_cells.ranges и заполняйте:
from openpyxl.utils import range_boundaries
for merged_range in sheet.merged_cells.ranges:
min_col, min_row, max_col, max_row = range_boundaries(str(merged_range))
top_value = sheet.cell(row=min_row, column=min_col).value
for row in range(min_row, max_row+1):
for col in range(min_col, max_col+1):
sheet.cell(row=row, column=col).value = top_valueСпециальные символы (кавычки, переносы строк) — json.dumps экранирует автоматически.
6. Сравнение способов конвертации
| Метод | Скорость | Размер файла | Сложность |
|---|---|---|---|
| Онлайн-конвертер | Мгновенно | До 10 МБ | Нет |
| Python openpyxl | Быстро | Любой | Средняя |
| CSV-прослойка | Средне | Любой | Низкая |
| Google Apps Script | Медленно | Google Sheet | Средняя |
CSV-прослойка: экспортируйте из Excel в CSV, затем сконвертируйте через CSV в JSON. Простой, но теряются типы данных (все строки).
7. Частые ошибки и как их избежать
Ошибка 1: Числа как строки — если в колонке есть текст среди чисел, openpyxl вернёт строку. Валидируйте типы.
Ошибка 2: Пропадают ведущие нули — номера телефонов, коды. Укажите в Excel формат ячейки «Текст» или в Python задайте явно str(value).
Рекомендации:
- Перед конвертацией проверьте Excel на объединённые ячейки и пустые строки;
- Для вложенных данных (например, товары с подтоварами) предварительно нормализуйте структуру;
- Используйте
ensure_ascii=Falseдля корректного отображения кириллицы.
🧮 Посчитайте сами — инструменты по теме
🧭 Разделы по теме
Частые вопросы
Как конвертировать Excel в JSON онлайн бесплатно?
Используйте наш онлайн-конвертер: перетащите файл .xlsx, настройте параметры (первая строка как ключи) и скачайте результат. Максимальный размер файла — 10 МБ.
Чем отличается XLSX от CSV при конвертации в JSON?
XLSX хранит типы данных (числа, даты) и форматирование, CSV — только текст в строках. Конвертация из XLSX в JSON сохраняет типы, из CSV — все значения будут строками.
Можно ли конвертировать Excel в JSON через Google Sheets?
Да, используйте Google Apps Script или скачайте лист как XLSX и конвертируйте онлайн. Есть ограничение по размеру (10 МБ для бесплатного аккаунта).
Как обработать объединённые ячейки в Excel при конвертации?
В openpyxl используйте merged_cells.ranges для получения диапазонов, затем заполните пустые ячейки значением верхней левой. Без обработки вы получите null в пропущенных ячейках.
Поддерживает ли онлайн-конвертер вложенные объекты JSON?
Нет, онлайн-конвертер создаёт массив плоских объектов. Для вложенных структур (например, товары с категориями) нужна постобработка или использование скрипта Python.
Как экспортировать Excel сразу в несколько JSON-файлов?
В Python разбейте данные по условию (например, по колонке "тип") и сохраните каждый фрагмент в отдельный файл через json.dump в цикле.
Что делать, если в Excel есть макросы или VBA?
openpyxl не выполняет макросы. Перед конвертацией выполните их в Excel и сохраните результаты, или удалите макросы. Онлайн-конвертеры тоже игнорируют VBA.
Как конвертировать Excel в JSON на мобильном устройстве?
Используйте онлайн-конвертер через браузер мобильного телефона. Файл можно загрузить из облачного хранилища (Google Drive, Dropbox).
Источники и нормативные документы
- Документация openpyxl
- MDN Web Docs: JSON
- Официальный сайт Python