Файлы с расширением .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 в таблицу, нужно сначала парсить (разбирать) файл, извлекая данные из тегов, а затем сохранять их в ячейки. Это можно сделать вручную, с помощью скриптов или специализированных сервисов — об этом далее.
Способ 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:
- Перейдите на сайт xmltoexcel.com.
- Нажмите
Choose Fileи загрузите ваш YML-файл. - Выберите формат выгрузки:
Excel (.xlsx). - Укажите, какие теги нужно конвертировать в колонки (например,
name,price,categoryId). - Нажмите
Convertи скачайте готовый файл.
⚠️ Внимание: Онлайн-сервисы могут некорректно обрабатывать кириллические символы в тегах (например,<название>вместо<name>). Перед конвертацией проверьте кодировку файла (должна бытьUTF-8).
Проверьте размер файла (не более 10 МБ)
Убедитесь, что файл в кодировке UTF-8
Сохраните резервную копию оригинального YML
Удалите лишние теги (например, <delivery-options>, если они не нужны)-->
Способ 2: Импорт YML в Excel через Power Query (для опытных пользователей)
Если вы работаете с YML регулярно, имеет смысл настроить автоматический импорт через Power Query — встроенный инструмент Excel для работы с данными. Этот метод требует начальных навыков, но позволяет гибко настраивать парсинг и обновлять данные в один клик.
Инструкция для Excel 2016 и новее:
- Откройте Excel и перейдите на вкладку
Данные→Получить данные→Из файла→Из XML. - Выберите ваш YML-файл и нажмите
Импорт. - В открывшемся окне Power Query вы увидите дерево тегов. Разверните нужные узлы (например,
offers→offer). - Нажмите
Преобразовать в таблицуи укажите, какие теги должны стать колонками. - Закройте редактор с сохранением изменений. Данные появятся в новом листе 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 и записывает данные в таблицу.
Пошаговая инструкция:
- Создайте новую Google Таблицу.
- Нажмите
Расширения→Apps Script. - Вставьте в редактор следующий код:
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()
]);
});
}
- Замените
'your_file.yml'на имя вашего файла (он должен быть загружен в Google Диск). - Сохраните скрипт и запустите функцию
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)
Чтобы запустить скрипт:
- Установите Python (версия 3.6+) с сайта python.org.
- Сохраните код в файл
convert.py. - Поместите
convert.pyи ваш YML-файл в одну папку. - Запустите командную строку и выполните:
pip install pandaspython 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-замену:
& → &
< → <
> → >
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 пропадают некоторые товары?
Это происходит из-за:
- Ошибок в структуре YML (например, дублирующиеся
idили незакрытые теги). - Ограничений инструмента конвертации (например, онлайн-сервисы могут игнорировать товары без обязательных полей вроде
price). - Фильтров в самом 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 + ручная правка.