Конвертируйте EXCEL в JSON: способы, качество и онлайн-сервис

💻 IT и кодОбновлено: 13 июля 2026 г.4 мин чтения
Вручную копировать данные из Excel в JSON — терять часы. Автоматизация нужна каждому разработчику. Разбираем 4 способа конвертации: от простого онлайн-конвертера до Python-скрипта. Выбирай под свою задачу.
⚡ Коротко: главное
  • Онлайн-конвертер 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 на нашем сайте. Алгоритм:

  1. Загрузите файл .xlsx или .xls;
  2. Укажите лист и диапазон (опционально);
  3. Настройте: первая строка как ключи, разделитель для вложенных колонок;
  4. Нажмите «Конвертировать» — получите 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 — возвращает значения, а не объекты ячеек.

Пошаговая инструкция конвертации Excel в JSON через Python
  1. 1
    Установка openpyxl

    pip install openpyxl

  2. 2
    Загрузка файла

    workbook = openpyxl.load_workbook('data.xlsx', data_only=True)

  3. 3
    Чтение заголовков

    keys = [cell.value for cell in sheet[1]]

  4. 4
    Обход строк

    for row in sheet.iter_rows(min_row=2, values_only=True)

  5. 5
    Формирование записей

    запись в dict с проверкой None

  6. 6
    Сериализация в JSON

    json.dump с ensure_ascii=False и indent=2

  7. 7
    Проверка результата

    откройте output.json и проверьте типы

Автоматизируйте конвертацию с openpyxl

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

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

  1. Документация openpyxl
  2. MDN Web Docs: JSON
  3. Официальный сайт Python

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