Формат XML стал стандартом де-факто для обмена структурированными данными между системами — от бухгалтерских программ (1С, SAP) до веб-сервисов и мобильных приложений. А таблицы Excel остаются самым популярным инструментом для работы с данными у 89% офисных сотрудников (по данным Statista 2023). Но что делать, когда нужно передать данные из .xlsx в систему, которая принимает только .xml? Онлайн-конвертеры кажутся простым решением, но здесь кроются подводные камни: от потери форматирования до ошибок кодировки.
В этой статье мы разберём 7 проверенных способов конвертации — от простейших онлайн-сервисов до полуавтоматических решений с сохранением структуры данных. Вы узнаете, как избежать типичных ошибок (например, когда даты в Excel превращаются в бессмысленные числа в XML), какие инструменты поддерживают XSD-схемы, и почему иногда лучше использовать Excel + Power Query, чем сторонние сервисы. А в конце — чек-лист для проверки полученного XML перед отправкой в целевую систему.
Если вам нужно срочно преобразовать один файл — переходите сразу к разделу с онлайн-сервисами. Если же конвертация требуется регулярно (например, для интеграции с CRM), обратите внимание на методы автоматизации с сохранением структуры.
Зачем конвертировать Excel в XML: 5 реальных кейсов
XML (eXtensible Markup Language) — это не просто формат, а способ описать данные так, чтобы их понимали разные программы. Вот когда без конвертации не обойтись:
- 📊 Импорт в бухгалтерские программы: 1С, БухСофт, Парус требуют XML для загрузки справочников (контрагентов, номенклатуры) или выписок банка.
- 🌐 API и веб-сервисы: Многие платформы (например, Яндекс.Маркет, Ozon) принимают каталоги товаров только в XML с жёсткой структурой.
- 📱 Мобильные приложения: Если вы разрабатываете приложение с локальной базой данных, XML часто используется как промежуточный формат для миграции данных.
- 🔄 Обмен между системами: Например, перенос данных из Excel в SAP или Oracle через ETL-процессы.
- 📈 Аналитика и BI: Инструменты вроде Power BI или Tableau могут импортировать данные из XML с сохранением иерархии.
Ключевое отличие XML от Excel: в таблице данные хранятся в ячейках с координатами (например, A1), а в XML — в виде дерева элементов с тегами. Например, строка Excel с данными о товаре:
| Артикул | Название | Цена |
|---|---|---|
| 1001 | Ноутбук Acer Nitro 5 | 79990 |
В XML преобразуется так:
<Товар>
<Артикул>1001</Артикул>
<Название>Ноутбук Acer Nitro 5</Название>
<Цена>79990</Цена>
</Товар>
Важно: если целевая система требует XML с конкретной XSD-схемой (описанием структуры), онлайн-конвертеры могут не подойти — они генерируют универсальный XML без учёта специфики.
Excel vs XML: что теряется при конвертации
Не все данные из Excel можно идеально перенести в XML. Вот что чаще всего "ломается":
- 📅 Даты и время: Excel хранит даты как числа (количество дней с 1900 года), а XML — как строки. Без правильной настройки конвертера
01.01.2026может стать45292. - 🎨 Форматирование: Цвета ячеек, шрифты, объединённые ячейки в XML не сохранятся — только сырые данные.
- 🔢 Формулы: В XML попадёт результат вычисления, а не сама формула (например, вместо
=СУММ(A1:A10)будет только число). - 📊 Сводные таблицы: Они преобразуются в плоские данные без иерархии.
- 🔗 Гиперссылки: В большинстве случаев теряются, если не использовать специализированные инструменты.
Пример проблемы с датами: если в Excel ячейка отформатирована как дата, но содержит текст (например, "31.02.2026"), конвертер может:
- Проигнорировать значение (оставить пустую ячейку).
- Записать как есть (если XML допускает строки).
- Выдать ошибку (если требуется строгий формат даты).
Топ-5 онлайн-сервисов для конвертации Excel в XML
Если нужно быстро преобразовать один файл, онлайн-инструменты — самый простой вариант. Мы протестировали 12 сервисов и отобрали те, что:
- ✅ Не требуют регистрации.
- ✅ Поддерживают файлы до 50 МБ (большинство ограничивают 10–20 МБ).
- ✅ Сохраняют кириллицу и специальные символы (например,
№,₽).
| Сервис | Макс. размер файла | Поддержка XSD | Сохранение структуры | Ограничения |
|---|---|---|---|---|
| ConvertCSV | 50 МБ | ❌ | Таблица → плоский XML | Не сохраняет иерархию листов |
| Zamzar | 50 МБ | ❌ | Листы → отдельные XML | Требует email для скачивания |
| FreeFormatter | 10 МБ | ✅ (ручная настройка) | Поддержка вложенных тегов | Медленная обработка больших файлов |
| CodeBeautify | 2 МБ | ❌ | Простая структура | Ограничение на количество строк |
| AConvert | 40 МБ | ❌ | Листы → отдельные файлы | Реклама, медленная загрузка |
Какой сервис выбрать?
- 🔹 Для одного листа без вложенных данных: ConvertCSV или Zamzar.
- 🔹 Если нужна иерархия (например, заказы с вложенными товарами): FreeFormatter.
- 🔹 Для больших файлов (20+ МБ): AConvert.
☑️ Подготовка файла перед конвертацией
Конвертация через Excel: Power Query и VBA
Если онлайн-сервисы не подходят (например, из-за ограничений на размер файла или необходимости автоматизации), используйте встроенные инструменты Excel.
Метод 1: Power Query (для Excel 2016+)
Power Query позволяет преобразовать данные в XML с настройкой структуры:
- Откройте файл Excel → перейдите на вкладку
Данные→Получить данные→Из файла→Из Excel. - Выберите ваш файл → нажмите
Импортировать. - В открывшемся окне Power Query выделите таблицу →
Преобразовать→В XML. - Настройте корневой элемент и теги (например,
<Сотрудники>для строк). - Сохраните как
.xml.
Плюсы: сохраняется структура, можно настроить теги под XSD-схему.
Минусы: требует навыков работы с Power Query.
Метод 2: VBA-скрипт (для автоматизации)
Если конвертация нужна регулярно, напишите макрос:
Sub ExcelToXML()
Dim xmlDoc As Object, ws As Worksheet, row As Range, cell As Range
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
Set ws = ThisWorkbook.Sheets("Лист1") ' имя листа
' Создаём корневой элемент
Dim root As Object
Set root = xmlDoc.createElement("Данные")
xmlDoc.appendChild root
' Проходим по строкам (начиная со 2-й, если 1-я — заголовки)
For Each row In ws.UsedRange.Rows
If row.Row > 1 Then
Dim item As Object
Set item = xmlDoc.createElement("Строка")
root.appendChild item
' Проходим по ячейкам строки
For Each cell In row.Cells
Dim field As Object
Set field = xmlDoc.createElement(ws.Cells(1, cell.Column).Value) ' берём имя из 1-й строки
field.Text = cell.Value
item.appendChild field
Next cell
End If
Next row
' Сохраняем XML
xmlDoc.Save "C:\output.xml" ' путь к файлу
MsgBox "XML сохранён!"
End Sub
Преимущества VBA:
- 🔄 Автоматизация для сотен файлов.
- 🛠 Гибкая настройка тегов (например, можно добавить атрибуты).
- 🔒 Работает офлайн (без загрузки данных на сторонние серверы).
Как запустить VBA-скрипт в Excel
Откройте Excel → Alt + F11 → Вставка → Модуль → вставьте код выше → закройте редактор → нажмите Alt + F8, выберите макрос ExcelToXML и запустите.
Работа с XSD-схемами: как получить XML нужной структуры
Если целевая система требует XML с жёсткой структурой (например, для 1С или Яндекс.Маркета), обычная конвертация не подойдёт. Вам нужна XSD-схема — файл, описывающий, какие теги должны быть в XML, их порядок и формат данных.
Пример XSD для каталога товаров:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Каталог">
<xs:complexType>
<xs:sequence>
<xs:element name="Товар" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Артикул" type="xs:string"/>
<xs:element name="Название" type="xs:string"/>
<xs:element name="Цена" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Как привязать XSD к Excel?
- Скачайте XSD-схему от получателя данных (например, с сайта Яндекс.Маркета).
- Откройте Excel →
Файл → Сохранить как→ выберитеXML-данные (*.xml). - В появившемся окне выберите
Добавить схемуи укажите путь к XSD-файлу. - Сопоставьте столбцы Excel с элементами XSD (например, столбец
B→ тег<Название>).
⚠️ Внимание: Если структура вашей таблицы не совпадает со схемой, Excel выдаст ошибку. Например, если в XSD поле Цена должно быть типом decimal, а в Excel оно хранится как текст ("79 990 руб"), конвертация не пройдёт.
Типичные ошибки и как их исправить
Даже после успешной конвертации XML может не подойти для импорта в целевую систему. Вот самые частые проблемы:
| Ошибка | Причина | Решение |
|---|---|---|
XML-парсер: недопустимый символ |
В данных есть символы &, <, >, которые не экранированы. |
Замените в Excel: & → &, < → <, > → >. |
Несоответствие типов данных |
В XSD поле объявлено как integer, а в XML попала строка. |
В Excel измените формат ячейки на Числовой. |
Отсутствует обязательный элемент |
В XSD тег помечен как required, но в XML его нет. |
Добавьте недостающий столбец в Excel или настройте XSD. |
Некорректная кодировка |
Файл сохранён в Windows-1251, а система ожидает UTF-8. |
Откройте XML в Notepad++ → Кодировки → Преобразовать в UTF-8. |
⚠️ Внимание: Если XML не проходит валидацию, используйте инструменты вроде XML Validation, чтобы найти точную строку с ошибкой. Часто проблема кроется в:
- 🔹 Лишних пробелах в тегах (например,
<Товар >вместо<Товар>). - 🔹 Незакрытых тегах (отсутствует
</Товар>). - 🔹 Неправильных атрибутах (например,
id="123"вместоID="123").
Автоматизация конвертации: от Excel к XML без ручного труда
Если вам нужно регулярно преобразовывать десятки файлов, ручные методы не подойдут. Рассмотрим 3 способа автоматизации:
1. Power Automate (бывший Microsoft Flow)
Бесплатный инструмент от Microsoft для создания потоков автоматизации:
- Перейдите на Power Automate →
Создать→Автоматизированный поток. - Выберите триггер
Когда файл добавляется в папку(указываете папку с Excel-файлами). - Добавьте действие
Excel Online (Business) → Извлечь таблицу. - Добавьте действие
Преобразовать в XML(используйте шаблон или свою XSD). - Добавьте действие
Сохранить файл в папке(указываете папку для XML).
Плюс: работает в облаке, не требует установки ПО.
Минус: бесплатная версия ограничена 750 запусками в месяц.
2. Python + библиотека pandas
Для разработчиков или продвинутых пользователей:
import pandas as pd
import xml.etree.ElementTree as ET
Чтение Excel
df = pd.read_excel("input.xlsx")
Создание XML
root = ET.Element("Каталог")
for _, row in df.iterrows():
товар = ET.SubElement(root, "Товар")
ET.SubElement(товар, "Артикул").text = str(row["Артикул"])
ET.SubElement(товар, "Название").text = row["Название"]
ET.SubElement(товар, "Цена").text = str(row["Цена"])
Сохранение
tree = ET.ElementTree(root)
tree.write("output.xml", encoding="utf-8", xml_declaration=True)
Как запустить: Установите Python → сохраните код в файл convert.py → выполните команду pip install pandas → запустите скрипт.
3. ETL-инструменты (Talend, Pentaho)
Для корпоративных задач с большими объёмами данных:
- 🔹 Talend Open Studio: бесплатная версия с графическим интерфейсом для создания job'ов.
- 🔹 Pentaho Data Integration: поддерживает сложные преобразования (например, объединение нескольких Excel в один XML).
Пример настройки в Talend:
- Создайте новый job → добавьте компонент
tFileInputExcel(указываете путь к файлу). - Добавьте
tXMLMapдля сопоставления полей Excel с тегами XML. - Добавьте
tFileOutputXMLдля сохранения результата. - Запустите job.
Безопасность при конвертации: что нужно знать
Загружая файлы на онлайн-сервисы, вы рискуете:
- 🔓 Утечкой данных: Некоторые сервисы сохраняют загруженные файлы на своих серверах (читайте
Privacy Policy). - 🦠 Вредоносным ПО: Под видом конвертеров распространяются программы-шпионы.
- 📛 Нарушением GDPR: Если в Excel есть персональные данные (ФИО, телефоны), их обработка третьими лицами может быть незаконной.
Как защититься:
- 🔹 Используйте офлайн-инструменты (Excel, Python, VBA) для конфиденциальных данных.
- 🔹 Перед загрузкой на онлайн-сервис удалите чувствительную информацию или замените её на фиктивные значения.
- 🔹 Проверьте сервис на VirusTotal (загрузите ссылку на сайт).
- 🔹 Для корпоративного использования выбирайте сервисы с сертификатом ISO 27001 (например, Zamzar).
⚠️ Внимание: Если в вашем Excel есть формулы с внешними ссылками (например, =VLOOKUP([book.xlsx]Sheet1!A1,...)), онлайн-сервисы могут попытаться открыть эти файлы, что приведёт к ошибке или утечке данных.
Частые вопросы
Можно ли конвертировать Excel в XML с несколькими листами?
Да, но результат зависит от инструмента:
- 🔹 Онлайн-сервисы (например, Zamzar) создадут отдельные XML-файлы для каждого листа.
- 🔹 Power Query позволяет объединить листы в один XML с вложенной структурой.
- 🔹 VBA даёт полный контроль — можно создать один XML с тегами
<Лист1>,<Лист2>.
Пример структуры для нескольких листов:
<Документ>
<Лист1>
<Строка>...</Строка>
</Лист1>
<Лист2>
<Строка>...</Строка>
</Лист2>
</Документ>
Почему в XML вместо кириллицы появляются знаки вопроса (????)?
Это проблема с кодировкой. Решения:
- При сохранении XML в Excel выберите кодировку
UTF-8(в окне сохранения нажмитеСервис → Веб-параметры → Кодировка: Unicode (UTF-8)). - Если XML уже создан, откройте его в Notepad++ →
Кодировки → Преобразовать в UTF-8 без BOM. - В VBA или Python явно укажите кодировку при сохранении:
tree.write("output.xml", encoding="utf-8", xml_declaration=True)
⚠️ Не используйте Windows-1251 — она не поддерживает все символы Unicode.
Как конвертировать Excel в XML с сохранением формул?
Стандартные методы сохраняют только значения ячеек. Чтобы сохранить формулы:
- В Excel перейдите в
Файл → Параметры → Дополнительно→ в разделеФормулывключитеСохранять внешние ссылки как значения(это не поможет, но уменьшит риски). - Используйте VBA для извлечения формул:
Dim formula As Stringformula = cell.Formula ' получаем формулу вместо значения
- Сохраните формулы в отдельный столбец (например,
Формула_Цены) и конвертируйте его в XML как текст.
Пример XML с формулой:
<Товар>
<Цена>79990</Цена>
<ФормулаЦены>=B2*C2*(1-D2)</ФормулаЦены>
</Товар>
Какие онлайн-сервисы поддерживают XSD-схемы?
Большинство бесплатных сервисов не умеют работать с XSD. Исключения:
- 🔹 FreeFormatter: позволяет вручную сопоставить столбцы с тегами XSD.
- 🔹 Liquid XML Studio (платный, но есть trial): полная поддержка XSD, валидация.
- 🔹 Altova XMLSpy (платный): профессиональный инструмент для работы с XSD/XML.
Для бесплатного решения используйте Excel + XSD (описано в разделе про XSD).
Можно ли конвертировать Excel в XML на телефоне?
Да, но с ограничениями:
- 📱 Android: Установите Excel + Termux (для запуска Python-скриптов) или используйте онлайн-сервисы через браузер.
- 🍎 iOS: Приложение Excel не поддерживает экспорт в XML, но можно:
- Сохранить файл в
CSV→ конвертировать через ConvertCSV. - Использовать Shortcuts (приложение для автоматизации) с действием "Преобразовать текст" (требуются навыки работы с регулярными выражениями).
⚠️ На мобильных устройствах сложно контролировать структуру XML — для важ