Как открыть YML в Excel: 5 рабочих способов + обработка ошибок

Файлы с расширением .yml (или .yaml) — это стандартный формат для обмена данными о товарах между интернет-магазинами и маркетплейсами вроде Яндекс.Маркета, Wildberries или Ozon. Внутри такого файла хранится структура каталога: названия товаров, цены, артикулы, категории и другие атрибуты в виде разметки, понятной машинам, но неудобной для человека. Когда нужно отредактировать прайс-лист, добавить новые позиции или проверить актуальность цен, прямое редактирование YML в блокноте чревато ошибками — достаточно пропустить запятую или кавычку, и файл перестанет читаться системами маркетплейсов.

Решение — конвертировать YML в Excel (форматы .xlsx или .csv), где данные представлены в виде таблицы с колонками и строками. Это упрощает работу с большими каталогами, позволяет использовать формулы для автоматического расчёта цен, фильтровать товары по категориям и экспортировать обратно в YML после правок. В этой статье разберём все актуальные способы открытия YML в Excel — от ручных методов до автоматизированных сервисов, а также покажем, как избежать типичных ошибок при конвертации.

Что такое YML и почему его нельзя открыть в Excel напрямую

Файл YML (Yandex Market Language) — это XML-формат с жёсткой структурой, разработанный специально для обмена данными о товарах. В отличие от .xlsx или .csv, где данные хранятся в ячейках таблицы, YML использует теги и атрибуты, как в HTML. Например, фрагмент файла с одним товаром может выглядеть так:

<offer id="12345" available="true">

<name>Смартфон Xiaomi Redmi Note 12</name>

<price>18990</price>

<currencyId>RUB</currencyId>

<categoryId>15</categoryId>

<picture>https://example.com/photo.jpg</picture>

</offer>

Если попробовать открыть такой файл в Excel через Файл → Открыть, программа либо отобразит весь текст в одной ячейке, либо выдаст ошибку о несовместимости форматов. Причина проста:

  • 📌 Excel не распознаёт XML-теги как структуру таблицы. Для него YML — это просто текстовый файл.
  • 🔄 Иерархическая структура (вложенные теги <offer>, <param>) не соответствует плоской табличной модели Excel.
  • 🛑 Отсутствует автоматическое сопоставление тегов с колонками (например, <name> → "Название товара").

Чтобы преобразовать YML в таблицу, нужно сначала парсить (разбирать) файл, извлекая данные из тегов, а затем сохранять их в ячейки. Это можно сделать вручную, с помощью скриптов или специализированных сервисов — об этом далее.

📊 Как часто вы работаете с YML-файлами?
Ежедневно
Раз в неделю
Раз в месяц
Реже
Никогда

Способ 1: Конвертация YML в Excel через онлайн-сервисы (без установки программ)

Самый быстрый способ для разовых задач — воспользоваться бесплатными онлайн-конвертерами. Они автоматически парсят YML и экспортируют данные в .xlsx или .csv. Рассмотрим топ-3 сервиса с их особенностями:

Сервис Поддерживаемые форматы Ограничения Ссылка
XML-to-Excel YML → XLSX, CSV Файл до 10 МБ, до 1000 товаров xmltoexcel.com
ConvertCSV YML → CSV (затем открыть в Excel) Без ограничений по размеру, но медленнее convertcsv.com
YML Parser (от Яндекс.Маркета) YML → XLSX (специализированный) Только для файлов, соответствующих стандарту Яндекса Яндекс.Парсер

Пошаговая инструкция на примере XML-to-Excel:

  1. Перейдите на сайт xmltoexcel.com.
  2. Нажмите Choose File и загрузите ваш YML-файл.
  3. Выберите формат выгрузки: Excel (.xlsx).
  4. Укажите, какие теги нужно конвертировать в колонки (например, name, price, categoryId).
  5. Нажмите Convert и скачайте готовый файл.
⚠️ Внимание: Онлайн-сервисы могут некорректно обрабатывать кириллические символы в тегах (например, <название> вместо <name>). Перед конвертацией проверьте кодировку файла (должна быть UTF-8).

Проверьте размер файла (не более 10 МБ)

Убедитесь, что файл в кодировке UTF-8

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

Удалите лишние теги (например, <delivery-options>, если они не нужны)-->

Способ 2: Импорт YML в Excel через Power Query (для опытных пользователей)

Если вы работаете с YML регулярно, имеет смысл настроить автоматический импорт через Power Query — встроенный инструмент Excel для работы с данными. Этот метод требует начальных навыков, но позволяет гибко настраивать парсинг и обновлять данные в один клик.

Инструкция для Excel 2016 и новее:

  1. Откройте Excel и перейдите на вкладку ДанныеПолучить данныеИз файлаИз XML.
  2. Выберите ваш YML-файл и нажмите Импорт.
  3. В открывшемся окне Power Query вы увидите дерево тегов. Разверните нужные узлы (например, offersoffer).
  4. Нажмите Преобразовать в таблицу и укажите, какие теги должны стать колонками.
  5. Закройте редактор с сохранением изменений. Данные появятся в новом листе Excel.

Преимущества метода:

  • 🔄 Автоматическое обновление — при изменении YML достаточно нажать Обновить на вкладке Данные.
  • 🛠 Гибкая настройка — можно исключать ненужные теги, объединять данные из нескольких файлов.
  • 📊 Сохранение структуры — поддерживаются вложенные теги (например, <param> внутри <offer>).
⚠️ Внимание: Если в YML используются нестандартные теги (например, кастомные параметры для Wildberries), Power Query может не распознать их автоматически. В этом случае придётся вручную редактировать запрос на языке M (кнопка ДополнительноРедактор дополнительных параметров).
Пример кода M для извлечения кастомного тега

Если в YML есть тег <vendorCode>, который не распознаётся автоматически, добавьте в Power Query следующий код на этапе преобразования:

= Table.AddColumn(#"Предыдущий шаг", "Артикул", each [offer][vendorCode][#text])

Способ 3: Конвертация через Google Таблицы (альтернатива Excel)

Если у вас нет доступа к Excel или файлы слишком большие, можно использовать Google Таблицы. Для этого понадобится скрипт на Google Apps Script, который парсит YML и записывает данные в таблицу.

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

  1. Создайте новую Google Таблицу.
  2. Нажмите РасширенияApps Script.
  3. Вставьте в редактор следующий код:
    function importYML() {
    

    const file = DriveApp.getFilesByName('your_file.yml').next();

    const content = file.getBlob().getDataAsString();

    const parsed = XmlService.parse(content);

    const root = parsed.getRootElement();

    const offers = root.getChild('shop').getChild('offers').getChildren('offer');

    const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

    sheet.clear();

    // Заголовки колонок

    sheet.appendRow(['ID', 'Название', 'Цена', 'Категория', 'URL картинки']);

    // Данные товаров

    offers.forEach(offer => {

    sheet.appendRow([

    offer.getAttribute('id').getValue(),

    offer.getChild('name').getText(),

    offer.getChild('price').getText(),

    offer.getChild('categoryId').getText(),

    offer.getChild('picture').getText()

    ]);

    });

    }

  4. Замените 'your_file.yml' на имя вашего файла (он должен быть загружен в Google Диск).
  5. Сохраните скрипт и запустите функцию importYML.

Через несколько секунд данные из YML появятся в таблице. Этот метод подходит для файлов до 50 МБ (ограничение Google Таблиц). Для больших файлов лучше использовать Python или специализированные программы.

const params = offer.getChildren('param').map(p => p.getChild('name').getText() + ': ' + p.getValue()).join(', ');-->

Способ 4: Программы для конвертации YML в Excel (офлайн-решения)

Если вы работаете с конфиденциальными данными или нуждаетесь в регулярной обработке YML, удобнее использовать десктопные программы. Они не требуют интернета, поддерживают большие файлы и часто имеют дополнительные функции (валидация, редактирование, экспорт обратно в YML).

Программа Платформа Особенности Стоимость
YML Editor Windows, macOS Визуальный редактор, поддержка XLSX/CSV, валидация по стандартам маркетплейсов От 1 200 ₽/месяц
1C:Предприятие (модуль обмена) Windows Интеграция с 1C, автоматическая выгрузка/загрузка YML Включено в лицензию 1C
XML Notepad (от Microsoft) Windows Бесплатный просмотрщик XML/YML, экспорт в CSV Бесплатно
Altova XMLSpy Windows, macOS, Linux Профессиональный инструмент для работы с XML/YML, поддержка XSLT От 5 000 ₽

Рекомендации по выбору:

  • 💼 Для бизнеса: YML Editor или модуль 1C — они поддерживают специфические требования маркетплейсов (например, проверку на соответствие стандартам Wildberries или Ozon).
  • 🆓 Для разовых задач: XML Notepad — бесплатный и простой, но без продвинутых функций.
  • 🛠 Для разработчиков: Altova XMLSpy — позволяет писать собственные скрипты на XSLT для сложных преобразований.
⚠️ Внимание: При использовании 1C убедитесь, что версия модуля обмена соответствует актуальным требованиям маркетплейса. Например, Яндекс.Маркет с 2023 года требует указания <sales_notes> для некоторых категорий товаров — старые версии 1C могут не поддерживать этот тег.

Способ 5: Автоматизация через Python (для технических специалистов)

Если вам нужно обрабатывать YML-файлы в большом объёме или интегрировать конвертацию в другие процессы (например, автоматическое обновление прайсов), оптимальное решение — написать скрипт на Python. Этот метод требует знаний программирования, но даёт максимальную гибкость.

Пример скрипта для конвертации YML в CSV:

import xml.etree.ElementTree as ET

import csv

Чтение YML-файла

tree = ET.parse('catalog.yml')

root = tree.getroot()

Создание CSV-файла

with open('output.csv', 'w', newline='', encoding='utf-8') as csvfile:

writer = csv.writer(csvfile)

# Заголовки колонок

writer.writerow(['ID', 'Название', 'Цена', 'Категория', 'URL картинки'])

# Обработка каждого товара

for offer in root.findall('.//offer'):

row = [

offer.get('id'),

offer.find('name').text,

offer.find('price').text,

offer.find('categoryId').text,

offer.find('picture').text

]

writer.writerow(row)

Чтобы запустить скрипт:

  1. Установите Python (версия 3.6+) с сайта python.org.
  2. Сохраните код в файл convert.py.
  3. Поместите convert.py и ваш YML-файл в одну папку.
  4. Запустите командную строку и выполните:
    pip install pandas
    

    python convert.py

Для обработки сложных YML (например, с вложенными параметрами или несколькими картинками) скрипт можно доработать с использованием библиотеки pandas:

import pandas as pd

import xml.etree.ElementTree as ET

tree = ET.parse('catalog.yml')

root = tree.getroot()

data = []

for offer in root.findall('.//offer'):

params = {p.get('name'): p.text for p in offer.findall('param')}

data.append({

'id': offer.get('id'),

'name': offer.find('name').text,

'price': offer.find('price').text,

**params # Добавляем все параметры как отдельные колонки

})

df = pd.DataFrame(data)

df.to_excel('output.xlsx', index=False)

Типичные ошибки при открытии YML в Excel и как их избежать

Даже после успешной конвертации в Excel вы можете столкнуться с проблемами, которые сделают файл непригодным для работы. Вот самые распространённые ошибки и способы их решения:

Ошибка Причина Решение
Кириллические символы отображаются как ???? Неверная кодировка файла (не UTF-8) Пересохраните YML в UTF-8 через Notepad++ или iconv в Linux
Данные из одного тега разбиты на несколько колонок В теге есть запятые или точки с запятой (разделители CSV) Используйте XLSX вместо CSV или заключите текст в кавычки
Отсутствуют некоторые колонки (например, price) Теги в YML имеют нестандартные названия (например, цена вместо price) Проверьте структуру YML и настройте парсинг вручную
Excel выдаёт ошибку "Слишком много строк" Файл содержит более 1 048 576 строк (ограничение Excel) Разбейте YML на несколько файлов или используйте Google Таблицы
Цены отображаются как текст (нельзя суммировать) Числовые значения сохранены как строка из-за лишних символов (например, "1 000 руб") Используйте функцию =ЗНАЧЕН(ПОДСТАВИТЬ(A1; " руб"; ""))

Дополнительные советы для избежания ошибок:

  • 🔍 Проверяйте YML на валидность перед конвертацией с помощью XML-валидатора. Ошибки в структуре файла (например, незакрытые теги) приводят к потере данных.
  • 📁 Сохраняйте резервные копии оригинального YML и промежуточных файлов. При ошибке конвертации вы сможете повторить процесс без потерь.
  • 🔄 Тестируйте на небольшом фрагменте. Прежде чем конвертировать весь файл, проверьте процесс на 10–20 товарах.
Как исправить ошибку "Недопустимый XML"

Если при импорте в Power Query появляется ошибка "Недопустимый XML", скорее всего, в YML есть специальные символы (например, &, <), которые не экранированы. Исправьте их вручную или используйте regex-замену:

& → &amp; < → &lt; > → &gt;

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

Можно ли открыть YML в Excel без конвертации?

Нет, Excel не умеет напрямую читать YML как таблицу. Однако вы можете открыть файл как текстовый (Файл → Открыть → Выбрать файл → Текстовые файлы (*.txt)), но данные отобразятся в одной ячейке без структуры. Для работы с таблицей конвертация обязательна.

Как экспортировать данные из Excel обратно в YML?

Для обратной конвертации используйте те же инструменты, что и для импорта (например, YML Editor или Python-скрипты). Главное — сохранить структуру тегов и атрибутов. Пример шаблона для экспорта:

<?xml version="1.0" encoding="UTF-8"?>

<yml_catalog date="2026-05-20">

<shop>

<offers>

{%- for row in dataframe.itertuples() %}

<offer id="{{ row.ID }}" available="true">

<name>{{ row.Название }}</name>

<price>{{ row.Цена }}</price>

<categoryId>{{ row.Категория }}</categoryId>

</offer>

{%- endfor %}

</offers>

</shop>

</yml_catalog>

Почему после конвертации в Excel пропадают некоторые товары?

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

  1. Ошибок в структуре YML (например, дублирующиеся id или незакрытые теги).
  2. Ограничений инструмента конвертации (например, онлайн-сервисы могут игнорировать товары без обязательных полей вроде price).
  3. Фильтров в самом Excel (проверьте, не скрыты ли строки или не применён автофильтр).

Решение: валидируйте YML перед конвертацией и сравнивайте количество строк в исходном файле и результате.

Как обработать YML с вложенными параметрами (например, несколько <param> для одного товара)?

Вложенные данные сложно представить в плоской таблице Excel. Варианты решений:

  • 📌 Объединить параметры в одну ячейку через запятую или разделитель (например, Цвет: красный; Размер: M).
  • 📊 Создать отдельные колонки для каждого параметра (если их список фиксированный).
  • 🔄 Использовать Power Query для "разворачивания" вложенных данных в отдельные строки.

Пример кода для Python (объединение параметров):

params = ', '.join([f"{p.get('name')}: {p.text}" for p in offer.findall('param')])
Какая программа лучше для регулярной работы с YML?

Выбор зависит от задач:

  • 🏢 Для бизнеса (маркетплейсы, 1C): YML Editor или встроенный модуль 1C:Предприятие.
  • 💻 Для разработчиков: Python + библиотеки xml.etree или lxml.
  • 📊 Для разовых задач: онлайн-сервисы вроде XML-to-Excel.
  • 🆓 Для бюджетного решения: XML Notepad + ручная правка.