Конвертация Excel в XML: 5 способов с сохранением структуры данных

Почему XML лучше таблиц Excel для обмена данными

Формат XML (eXtensible Markup Language) стал стандартом де-факто для обмена структурированными данными между системами. В отличие от бинарных файлов .xlsx, XML-документы читаются как людьми, так и машинами, что делает их идеальными для интеграции с , SAP, веб-сервисами или базами данных. Главное преимущество — XML сохраняет иерархию данных (вложенные узлы), тогда как Excel работает только с плоскими таблицами.

Типичные сценарии, когда требуется конвертация:

  • 📤 Импорт прайс-листов в интернет-магазины (Shopify, Wildberries, Ozon)
  • 🔄 Обмен данными между бухгалтерскими программами (1С:Предприятие, МойСклад)
  • 📊 Интеграция с аналитическими системами (Power BI, Tableau)
  • 🤖 Автоматизация через API (загрузка каталогов, отчётов, справочников)

Однако не все знают, что Excel умеет экспортировать в XML напрямую — без сторонних инструментов. Проблема в том, что стандартный экспорт часто даёт некорректную структуру, особенно если в таблице есть объединённые ячейки или формулы. Далее разберём все рабочие методы — от простых до продвинутых.

📊 Для чего вам нужен XML из Excel?
Импорт в 1С
Загрузка на маркетплейс
Интеграция с CRM
Другое

Способ 1: Экспорт в XML через встроенные функции Excel

Самый очевидный путь — использовать штатный функционал Microsoft Excel или LibreOffice Calc. Подходит для простых таблиц без сложной вложенности. Важно: в .xlsx уже есть XML-структура (это zip-архив с файлами xml внутри), но нам нужен отдельный файл с вашими данными.

Пошаговая инструкция для Excel 2019/2021/365:

  1. Откройте файл и удалите все лишние листы (оставьте только данные для экспорта).
  2. Выделите диапазон ячеек с данными (включая заголовки столбцов).
  3. Перейдите в Файл → Сохранить как.
  4. В поле «Тип файла» выберите XML данные (*.xml).
  5. Нажмите «Сохранить» — откроется мастер экспорта.

Удалить пустые строки/столбцы|

Заменить специальные символы (&, <, >) на HTML-сущности|

Проверить кодировку (UTF-8)|

Сохранить резервную копию оригинала

-->

В мастере экспорта:

  • 🔹 Выберите «XML-таблица» (если нужна структура с тегами для строк).
  • 🔹 Укажите корневой элемент (например, <Catalog>).
  • 🔹 Настройте соответствие столбцов тегам (по умолчанию берутся заголовки).
⚠️ Внимание: Если в ячейках есть формулы, Excel экспортирует только значения. Чтобы сохранить формулы, сначала конвертируйте их в текст через Найти и заменить (ищите =, заменяйте на '=).
Проблема Причина Решение
Ошибка «Схема XML недействительна» Специальные символы в данных (&, <, >) Замените на &amp;, &lt;, &gt;
Пустые теги в XML Пустые ячейки в Excel Заполните их значением по умолчанию (например, N/A)
Потеря форматирования XML не поддерживает цвета/шрифты Экспортируйте данные отдельно от стилей

Способ 2: Онлайн-конвертеры — быстро, но не всегда безопасно

Если у вас разовая задача и нет времени разбираться с настройками, можно воспользоваться онлайн-сервисами. Популярные инструменты:

  • 🌐 ConvertCSV — поддерживает .xls/.xlsx до 50 МБ.
  • 🌐 Zamzar — конвертирует в XML, но отправляет файл на сервер.
  • 🌐 TableConvert — позволяет настроить теги вручную.

Как работать с ConvertCSV:

  1. Загрузите файл Excel (или скопируйте данные в текстовое поле).
  2. Выберите разделитель (обычно Tab или ;).
  3. Укажите корневой тег (например, Products).
  4. Настройте теги для строк (Product) и столбцов (на основе заголовков).
  5. Скачайте результат.
⚠️ Внимание: Онлайн-конвертеры не подходят для конфиденциальных данных (финансовые отчёты, персональная информация). Файлы могут временно храниться на серверах третьих лиц. Для чувствительных данных используйте офлайн-методы.

Способ 3: Конвертация через Power Query (для сложных структур)

Power Query — это встроенный в Excel инструмент для трансформации данных (доступен в Excel 2016+ и Power BI). Он позволяет гибко настраивать структуру XML, включая вложенные узлы.

Алгоритм действий:

  1. Импортируйте данные в Power Query: Данные → Получить данные → Из файла → Из Excel.
  2. В редакторе запросов выберите таблицу и нажмите Трансформировать → XML.
  3. Настройте иерархию:
    • 📌 Для простой таблицы: Преобразовать → В XML.
    • 📌 Для вложенных данных: создайте группы через Группировка.
  • Экспортируйте результат: Главная → Закрыть и загрузить → Экспортировать в файл.
  • Пример настройки для каталога товаров с категориями:

    let
    

    Источник = Excel.CurrentWorkbook(){[Name="Товары"]}[Content],

    Группировка = Table.Group(Источник, {"Категория"}, {{"Товары", each _, type table}}),

    ВXML = Xml.FromValue(Группировка)

    in

    ВXML

    Как сохранить схему XSD для валидации XML?

    1. В Power Query после преобразования в XML нажмите Дополнительно → Показать схему XSD.

    2. Скопируйте сгенерированную схему в текстовый файл с расширением .xsd.

    3. Используйте её для проверки XML через инструменты вроде XML Validator (https://www.xmlvalidation.com/).

    Способ 4: Автоматизация через Python (для программистов)

    Если вам нужно обработать сотни файлов или интегрировать конвертацию в пайплайн, Python — лучший выбор. Библиотеки pandas и xml.etree.ElementTree позволяют гибко настраивать структуру выходного файла.

    Пример скрипта для преобразования Excel в XML с вложенными тегами:

    import pandas as pd
    

    import xml.etree.ElementTree as ET

    Чтение Excel

    df = pd.read_excel("data.xlsx")

    Создание корневого элемента

    root = ET.Element("Catalog")

    for _, row in df.iterrows():

    product = ET.SubElement(root, "Product")

    ET.SubElement(product, "ID").text = str(row["ID"])

    ET.SubElement(product, "Name").text = row["Name"]

    ET.SubElement(product, "Price").text = str(row["Price"])

    Сохранение в файл

    tree = ET.ElementTree(root)

    tree.write("output.xml", encoding="utf-8", xml_declaration=True)

    Для установки зависимостей выполните:

    pip install pandas openpyxl
    • ⚡ Преимущества метода:
      • 🔹 Обработка больших файлов (100+ тыс. строк).
      • 🔹 Гибкая настройка структуры XML.
      • 🔹 Автоматизация через cron или Airflow.
    • ⚠️ Ограничения:
      • 🔹 Требуются навыки программирования.
      • 🔹 Нужно обрабатывать специальные символы вручную.

    Способ 5: Через 1С:Предприятие (для бухгалтеров)

    Если цель конвертации — загрузка в , проще всего использовать встроенные механизмы обмена. Большинство конфигураций (1С:Бухгалтерия, 1С:УТ, 1С:ЗУП) поддерживают импорт XML через универсальные форматы обмена (например, EnterpriseData).

    Инструкция для 1С:Предприятие 8.3:

    1. В Excel подготовьте данные в соответствии с требованиями 1С (обязательные поля: Ссылка, Наименование).
    2. Экспортируйте в XML через Файл → Сохранить как → XML данные.
    3. В 1С перейдите в Администрирование → Обмен данными → Универсальные форматы.
    4. Выберите тип объекта (например, Номенклатура) и загрузите файл.
    ⚠️ Внимание: строго проверяет структуру XML. Если в файле отсутствуют обязательные теги (например, <Ссылка>), загрузка завершится ошибкой. Всегда сверяйтесь с документацией по форматам обмена.
    Тип данных в 1С Соответствующий тег в XML Пример значения
    Справочник «Номенклатура» <Каталог><Товар> <Наименование>Монитор 27"</Наименование>
    Документ «Поступление» <Документ><ПоступлениеТоваров> <Дата>2026-05-20</Дата>
    План видов характеристик <Характеристики><Цвет> <Значение>Чёрный</Значение>

    Частые ошибки и как их избежать

    Даже опытные пользователи сталкиваются с проблемами при конвертации. Вот топ-5 ошибок и их решения:

    1. Кодировка «кракозябры»

      Причина: Excel сохраняет XML в UTF-16, а система ожидает UTF-8.

      Решение: Откройте файл в Notepad++ и конвертируйте кодировку через Кодировки → Преобразовать в UTF-8 (без BOM).

    2. Потеря ведущих нулей

      Причина: Excel автоматически убирает нули в числовых полях (например, 00123 становится 123).

      Решение: Перед экспортом отформатируйте столбец как текстовый (Формат ячеек → Текстовый).

    3. Ошибка «Недопустимый символ»

      Причина: В данных есть неэкранированные символы &, <, >.

      Решение: Замените их на сущности (&amp;, &lt;, &gt;) через Найти и заменить.

    FAQ: Ответы на частые вопросы

    Можно ли конвертировать Excel в XML без потери формул?

    Нет, стандартный экспорт из Excel сохраняет только значения ячеек. Чтобы сохранить формулы:

    1. Добавьте перед каждой формулой апостроф (') — это преобразует её в текст.
    2. Или экспортируйте данные в CSV, а затем конвертируйте в XML через скрипт, сохраняя оригинальный текст ячеек.
    Как экспортировать в XML несколько листов Excel?

    Встроенные инструменты Excel не поддерживают мультилистовой экспорт. Решения:

    • 🔹 Объедините листы в один через Power Query (Данные → Получить данные → Объединить запросы).
    • 🔹 Используйте Python-скрипт с pandas (пример выше), обрабатывая каждый лист в цикле.
    • 🔹 Онлайн-сервисы вроде TableConvert позволяют загружать несколько листов.
    Почему в XML теги дублируются или пропадают?

    Это происходит из-за:

    • 🔸 Объединённых ячеек в Excel — разбейте их перед экспортом.
    • 🔸 Пустых строк/столбцов — удалите их или заполните значениями по умолчанию.
    • 🔸 Неправильных заголовков — убедитесь, что в первой строке нет пустых ячеек.

    Проверьте структуру в Notepad++ с подсветкой синтаксиса XML.

    Как автоматизировать конвертацию для ежедневных отчётов?

    Оптимальные варианты:

    1. Power Query + Power Automate:
      • Создайте запрос в Excel для преобразования данных.
      • Настройте автоматическое обновление через Power Automate (бывший Microsoft Flow).
  • Python-скрипт + cron:
    # Пример для Linux (добавьте в crontab):
    

    0 18 1-5 python3 /path/to/convert.py > /dev/null 2>&1

    Скрипт будет запускаться в 18:00 по будням.

  • Какие альтернативы XML стоит рассмотреть?

    Если XML не подходит по причинам:

    • 📌 JSON — легче парсится в веб-приложениях (используйте pandas.to_json() в Python).
    • 📌 CSV — проще для плоских таблиц (но теряет иерархию).
    • 📌 YAML — удобочитаемый формат для конфигураций.
    • 📌 Parquet/Avro — бинарные форматы для больших данных (используются в Hadoop/Spark).

    Выбор зависит от системы, куда вы загружаете данные. Например, Ozon и Wildberries принимают и XML, и JSON, а работает только с XML.