Как сформировать XML-файл из Excel: 5 проверенных способов с примерами

Если вам нужно преобразовать данные из Microsoft Excel в структурированный XML-файл, но стандартный экспорт через "Сохранить как" не даёт нужного результата — проблема в отсутствии встроенной функции прямого конвертирования. Excel сохраняет таблицы в XML только в формате SpreadsheetML (расширение .xml), который не подходит для большинства внешних систем (1С, сайты, API). Чтобы получить кастомный XML с произвольной структурой тегов, потребуется использовать обходные пути: от ручного редактирования до автоматизации через Power Query или VBA.

В этой статье разберём 5 рабочих методов — от простых (для одноразовых задач) до продвинутых (для регулярного экспорта больших объёмов данных). Особое внимание уделим типичным ошибкам при формировании XML, которые ломают структуру файла: некорректные символы в ячейках, отсутствие корневого тега или неправильная кодировка. Все инструкции протестированы на Excel 2019–2026 и Microsoft 365.

1. Стандартный экспорт в XML через "Сохранить как" (ограниченный вариант)

Самый быстрый способ — использовать встроенную функцию Excel для сохранения таблицы в формате XML-данные 2003. Однако этот метод подходит только для простых случаев, когда:

  • 📊 Структура данных плоская (без вложенных тегов).
  • 🔄 Нужно сохранить одну таблицу без связей с другими листами.
  • 📌 Формат SpreadsheetML принимается целевой системой (например, для импорта в старые версии 1С).

Как экспортировать:

  1. Откройте файл Excel и выделите диапазон ячеек с данными.
  2. Перейдите в меню Файл → Сохранить как.
  3. В поле "Тип файла" выберите XML-данные (*.xml).
  4. Нажмите Сохранить и подтвердите экспорт (Excel предложит создать XML-карту, если её нет).
⚠️ Внимание: Если при сохранении появляется ошибка "Недопустимые символы в XML", проверьте ячейки на наличие &, <, > или кавычек. Замените их на безопасные символы или используйте методы из следующих разделов.

2. Ручное создание XML через Excel + Блокнот (для небольших таблиц)

Если целевой XML требует специфической структуры тегов (например, для интеграции с сайтом или CRM), можно сгенерировать файл вручную. Этот метод оптимален для таблиц до 50 строк.

Алгоритм:

  1. Экспортируйте данные из Excel в CSV (через Файл → Сохранить как → CSV (разделители — запятые)).
  2. Откройте полученный .csv в Блокноте или Notepad++.
  3. Добавьте в начало файла корневой тег (например, <catalog>), а каждую строку оберните в нужные теги:
    <catalog>
    

    <item>

    <name>Товар 1</name>

    <price>1000</price>

    </item>

    <item>

    <name>Товар 2</name>

    <price>1500</price>

    </item>

    </catalog>

  4. Сохраните файл с расширением .xml.

Для ускорения процесса используйте поиск и замену в Notepad++:

  • 🔍 Замените запятые на </тег><тег> (например, ,</name><price>).
  • 📝 Добавьте заголовки тегов в первую строку.

3. Автоматизация через Power Query (для сложных структур)

Power Query — встроенный в Excel инструмент для трансформации данных, который позволяет создавать XML с вложенными тегами. Метод подходит для средних и крупных таблиц (от 100 строк), где требуется группировка данных или иерархия.

Пошаговая инструкция:

  1. Выделите исходную таблицу и перейдите на вкладку Данные → Получить данные → Из таблицы/диапазона.
  2. В открывшемся окне Power Query нажмите Трансформировать → Группировка (если нужно создать вложенные теги).
  3. Добавьте столбец с XML-тегами через Добавить столбец → Пользовательский. Например, формула:
    = "<product><id>" & [ID] & "</id><name>" & [Название] & "</name></product>"
  4. Объедините все строки в один XML-документ через Трансформировать → Объединить (разделитель — пустая строка).
  5. Экспортируйте результат в текстовый файл и сохраните как .xml.
Задача Инструмент Сложность Время выполнения
Простая таблица (до 50 строк) Ручной экспорт + Блокнот Низкая 10–20 минут
Средняя таблица (100–1000 строк) Power Query Средняя 30–60 минут
Сложная иерархия (вложенные теги) VBA или специализированные конвертеры Высокая 1–3 часа

4. Использование VBA для генерации XML (для продвинутых пользователей)

Если вам нужно регулярно экспортировать данные в XML с фиксированной структурой, напишите макрос на VBA. Этот метод требует начальных знаний программирования, но даёт полный контроль над форматом выходного файла.

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

Sub ExportToXML()

Dim xmlDoc As Object, root As Object, row As Object, cell As Object

Dim i As Integer, j As Integer

Dim filePath As String

' Создаём XML-документ

Set xmlDoc = CreateObject("MSXML2.DOMDocument")

Set root = xmlDoc.createElement("catalog")

xmlDoc.appendChild root

' Проходим по выделенному диапазону

For i = 2 To Selection.Rows.Count ' Пропускаем заголовки

Set row = xmlDoc.createElement("item")

root.appendChild row

For j = 1 To Selection.Columns.Count

Set cell = xmlDoc.createElement(Selection.Cells(1, j).Value)

cell.Text = Selection.Cells(i, j).Value

row.appendChild cell

Next j

Next i

' Сохраняем файл

filePath = "C:\export.xml" ' Укажите свой путь

xmlDoc.Save filePath

MsgBox "XML-файл сохранён по пути: " & filePath

End Sub

Как использовать:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Выделите диапазон с данными в Excel и запустите макрос (F5).
⚠️ Внимание: Перед запуском макроса проверьте, что в первой строке выделенного диапазона находятся названия тегов (например, "name", "price"). Если ячейки содержат запрещённые символы (&, <), макрос завершится с ошибкой.

Выделите только необходимые столбцы и строки|Проверьте ячейки на наличие специальных символов (&, <, >)|Убедитесь, что первая строка содержит названия тегов|Сохраните резервную копию исходного файла Excel-->

5. Специализированные конвертеры (для нестандартных задач)

Если встроенные инструменты Excel не подходят, используйте сторонние программы или онлайн-сервисы. Они поддерживают:

  • 🔄 Автоматическое сопоставление столбцов Excel с XML-тегами.
  • 📁 Экспорт нескольких листов в один XML-файл.
  • 🔍 Валидацию результата по XSD-схеме.

Популярные инструменты:

Название Тип Особенности Стоимость
Altova MapForce Десктопное ПО Визуальное сопоставление полей, поддержка XSD Платная (от $499)
Oxygen XML Editor Десктопное ПО Редактирование и валидация XML, интеграция с Excel Платная (от $468)
ConvertCSV Онлайн-сервис Бесплатный конвертер CSV/Excel в XML Бесплатно (ограничение 500 строк)

Для одноразовых задач подойдёт бесплатный ConvertCSV:

  1. Экспортируйте данные из Excel в CSV.
  2. Загрузите файл на сайт и укажите разделитель (запятая или точка с запятой).
  3. Настройте корневой тег и теги для столбцов.
  4. Скачайте готовый .xml.
Пример структуры XML для каталога товаров

Ноутбук Acer Aspire 5 45990 15 Электроника Ноутбуки Смартфон Samsung Galaxy S23 79990 8

6. Типичные ошибки и как их избежать

Даже при корректном экспорте XML-файл может не пройти валидацию в целевой системе. Рассмотрим самые частые проблемы и способы их решения:

  • 🚫 Недопустимые символы: &, <, > должны быть заменены на &, <, >. Используйте функцию =SUBSTITUTE() в Excel для автоматической замены.
  • 🔠 Некорректная кодировка: XML требует UTF-8. При сохранении в Блокноте выбирайте "Кодировка → UTF-8".
  • 📛 Отсутствует корневой тег: Каждый XML должен иметь один корневой элемент (например, <catalog>).
  • 🔢 Числа без тегов: Целевая система может не распознать числа без обёртки в теги (например, <price>1000</price>).

Для проверки файла используйте:

  • 🛠️ XML Validation — онлайн-валидатор.
  • 📄 Notepad++ с плагином XML Tools (проверка синтаксиса).

FAQ: Частые вопросы по экспорту XML из Excel

Можно ли экспортировать несколько листов Excel в один XML?

Да, но стандартными средствами Excel — нет. Используйте VBA или сторонние инструменты вроде Altova MapForce. Пример кода на VBA для объединения листов:

Dim ws As Worksheet, xmlDoc As Object

Set xmlDoc = CreateObject("MSXML2.DOMDocument")

Set root = xmlDoc.createElement("data")

For Each ws In ThisWorkbook.Worksheets

' Добавляем данные каждого листа в XML

' (реализация зависит от структуры ваших данных)

Next ws

xmlDoc.Save "C:\combined.xml"

Почему при экспорте в XML теряются русские буквы?

Проблема в кодировке. При сохранении файла выбирайте UTF-8 (в Блокноте или Notepad++). Если используете Power Query, добавьте шаг преобразования кодировки:

= Text.FromBinary(Text.ToBinary([Столбец], 1251), 65001)  ' Конвертация из Windows-1251 в UTF-8

Как экспортировать в XML данные с формулами?

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

  1. Скопируйте диапазон с формулами (Ctrl + C).
  2. Выполните Специальная вставка → Значения (Ctrl + Alt + V → В).
  3. Экспортируйте полученные значения в XML.

Какие альтернативы Excel подходят для работы с XML?

Если вам часто нужно конвертировать данные в XML, рассмотрите:

  • 📌 LibreOffice Calc — бесплатный аналог Excel с поддержкой экспорта в XML.
  • 📌 Google Sheets + скрипты Apps Script (для облачной автоматизации).
  • 📌 Python с библиотеками pandas и xml.etree (для сложных задач).