Импорт товаров из Excel в интернет-магазин: подготовка прайса и загрузка

Автор: Опубликовано: 9 минут чтения

Разбираем, как привести прайс-лист в Excel или CSV к виду, который примет модуль импорта: обязательные колонки, категории, свойства, ссылки на изображения. Отдельно — сохранение файла в нужной кодировке, борьба с разделителями и пошаговая загрузка товаров в WooCommerce, OpenCart, 1С-Битрикс, Joomla/VirtueMart, InSales и Tilda.

Импорт товаров из Excel в интернет-магазин: подготовка прайса и загрузка
Содержание
  1. Что подготовить к импорту
  2. Формат файла и структура колонок
  3. Категории и свойства
  4. Изображения товаров
  5. Кодировка, разделители и типы данных
  6. Как загрузить товары в WooCommerce
  7. OpenCart, 1С-Битрикс и Joomla/VirtueMart
  8. InSales и Tilda
  9. Проверка после импорта

Коротко: как загрузить товары из Excel в интернет-магазин

  1. Соберите данные в одну таблицу. Сведите товары, цены, остатки и ссылки на изображения в один лист без объединённых ячеек, скрытых строк и итоговых строк в конце файла.
  2. Приведите колонки к шаблону магазина. Скачайте образец файла импорта в админке вашей CMS или плагина и переименуйте заголовки колонок так, как требует этот шаблон.
  3. Сохраните файл в нужном формате и кодировке. Для CSV выбирайте UTF-8 и тот разделитель (запятая или точка с запятой), который указан в настройках импорта; артикулы и штрихкоды храните как текст.
  4. Загрузите файл и сопоставьте колонки. В разделе импорта выберите файл, на шаге сопоставления укажите, какая колонка соответствует названию, цене, артикулу, категории и изображению.
  5. Проверьте результат на нескольких товарах. Откройте карточки из разных категорий, сверьте цену, остаток, картинку и адрес страницы, затем проверьте поиск и оформление тестового заказа.

Что подготовить к импорту

Импорт товаров из Excel в интернет-магазин почти никогда не проходит «в один клик»: сначала таблицу приводят к виду, который понимает модуль импорта конкретной CMS. Прайс поставщика для этого обычно не годится — в нём бывают объединённые ячейки, лишние колонки, цены в формате «1 999,00 руб.» и картинки, вставленные прямо в ячейку.

Перед загрузкой проверяют четыре вещи:

  • состав колонок — есть ли название, цена, артикул, категория;
  • уникальный идентификатор — артикул (SKU), по которому магазин отличает новый товар от уже загруженного;
  • формат файла и кодировка — их должен поддерживать модуль импорта;
  • изображения — доступны ли они по ссылке или лежат отдельным архивом.

Если артикул пустой, повторяется или написан по-разному у одного и того же товара, магазин создаст дубли либо перезапишет чужую карточку. Артикул удобно вести в отдельном справочнике и не менять после первой загрузки: именно он служит ключом для всех последующих обновлений цен и остатков.

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

Формат файла и структура колонок

CSV или XLSX

CSV — текстовый файл, где значения разделены запятой или точкой с запятой. Его читают почти все модули импорта, он не зависит от версии Excel и легко генерируется скриптом. Минус — в CSV нет типов данных: всё хранится как текст, оформление и формулы теряются.

XLSX удобнее для правок, но поддерживается не везде: часть CMS и плагинов принимает только CSV, для XLSX нужен отдельный модуль или конвертация. Подробнее о форматах — CSV и XLSX.

Критерий CSV XLSX
Поддержка в CMS почти везде зависит от модуля
Кодировка задаётся при сохранении хранится внутри файла
Риск потери типов (артикулы, штрихкоды) высокий средний
Ручные правки большого каталога неудобно удобно
Автоматическая генерация скриптом удобно сложнее

Пример строки CSV, где разделитель — точка с запятой:

sku;name;category;price;quantity;image_url
A-1001;Кружка керамическая 350 мл;Посуда > Кружки;590.00;12;https://example.ru/img/a-1001.jpg

Не каждый магазин примет точку с запятой: многие модули ждут запятую либо позволяют выбрать разделитель в настройках. Если после загрузки вся строка оказалась в одной колонке — причина именно в разделителе.

Обязательные и дополнительные колонки

Поле Пример Комментарий
Название Кружка керамическая 350 мл без него товар не создаётся
Артикул (SKU) A-1001 ключ для обновления
Цена 590.00 без пробелов и знака валюты
Старая цена 790.00 для скидки, если поддерживается
Категория Посуда > Кружки путь или название раздела
Остаток 12 0 = нет в наличии
Изображение https://example.ru/img/a-1001.jpg публичная ссылка
Описание текст, допускается HTML без переносов внутри ячейки
Свойства Объём: 350 мл формат задаёт модуль

Имена колонок не произвольны. WooCommerce ждёт заголовки на английском (Name, SKU, Regular price, Categories, Images, Description), OpenCart и VirtueMart используют свои наборы, 1С-Битрикс сопоставляет колонки вручную при настройке импорта. Поэтому под каждую площадку делают отдельный шаблон: один раз переименовать строку заголовков проще, чем каждый раз настраивать соответствие заново.

Отдельно проверяют вес, габариты и единицы измерения: если магазин считает доставку по весу, а в прайсе он указан в граммах вместо килограммов, расчёт стоимости доставки будет неверным.

Категории и свойства

Категория — самый частый источник ошибок после кодировки. Правила простые:

  • Разделитель иерархии зависит от CMS. В WooCommerce это >: Посуда > Кружки. В сторонних модулях встречаются /, /// и другие символы — смотрите документацию модуля.
  • Названия должны совпадать посимвольно. «Посуда» и «посуда» дадут два разных раздела.
  • Автосоздание разделов есть не везде. Если опции нет, категории создают заранее в админке, а в файле указывают точные названия или идентификаторы.
  • Один товар в нескольких категориях — перечисление через запятую или | в одной ячейке, а не две строки с одним артикулом.
  • Не путайте категорию и свойство. «Красные кружки» лучше вынести в свойство «Цвет», иначе дерево каталога разрастётся и запутает покупателя.
  • Два-три уровня вложенности обычно достаточно; глубже страницы хуже находятся поиском и сложнее в поддержке.

Свойства в файле задают по-разному. В WooCommerce это пары колонок вида Attribute 1 name и Attribute 1 value(s); в других системах — колонки «Свойство: значение», отдельный лист или файл. Универсального формата нет, поэтому свойства добавляют последним этапом, после того как товары, цены и категории загрузились без ошибок.

Изображения товаров

Картинку, вставленную в ячейку Excel, магазин не заберёт. Работают два подхода:

  1. Ссылка на изображение. В ячейке — полный адрес вида https://example.ru/img/a-1001.jpg. Требования: абсолютный URL, доступность без авторизации, латиница в имени файла, отсутствие пробелов. Несколько фото перечисляют через запятую в одной колонке (так это устроено в WooCommerce) либо разносят по колонкам image, image2, image3, если модуль это поддерживает.
  2. Архив с файлами по артикулам. Часть модулей умеет распаковывать ZIP и сопоставлять имена файлов с артикулами. Способ экономит время, но требует, чтобы имена совпадали с SKU один в один, без лишних символов и пробелов.

Практические мелочи, которые ломают импорт: кириллица в имени файла, разные расширения в одном каталоге, картинки-заглушки весом в несколько мегабайт, дубли имён у разных товаров. Заглавное изображение обычно задаётся первой ссылкой в списке, а галерея — остальными.

Кодировка, разделители и типы данных

Симптом Причина Решение
«ÐšÑ€ÑƒÐ¶ÐºÐ°» вместо текста файл в UTF-8, магазин читает Windows-1251 (или наоборот) указать кодировку в настройках импорта или пересохранить файл
Первая колонка не распознаётся BOM в начале файла сохранить CSV в UTF-8 без BOM
Вся строка в одной колонке разделитель не совпадает с ожидаемым выбрать запятую или точку с запятой в настройках
Цена не принимается десятичный разделитель , вместо . или пробелы в тысячах оставить 590.00 без пробелов
Артикул превратился в 1,23E+12 Excel воспринял длинное число как числовой формат задать формат «Текст» до ввода данных
007 стало 7 потеря ведущих нулей формат «Текст» для колонки артикулов
Описание разорвало строку перенос строки внутри незакавыченного поля взять текст в двойные кавычки
Часть колонок съехала объединённые ячейки или скрытые строки отменить объединение, удалить лишние строки

В Excel для CSV есть отдельный пункт сохранения — «CSV UTF-8 (разделители — запятые)»; вариант «CSV (разделители — запятые)» в русской локали сохраняет файл в системной кодировке. В LibreOffice в диалоге экспорта отдельно выбираются кодировка, разделитель и кавычки для текстовых полей.

Ещё одна типовая проблема — «грязные» данные в прайсе: руб., шт., от 1000, диапазоны цен. Модуль импорта такие значения либо пропустит, либо запишет как ноль. Числовые колонки должны содержать только числа.

Как загрузить товары в WooCommerce

В WooCommerce встроенный импорт работает с CSV и не требует плагинов.

  1. Откройте Товары → Все товары → Импорт.
  2. Скачайте образец файла: он задаёт точные имена колонок для вашей версии.
  3. Заполните обязательные поля: Name, SKU, Regular price, Categories, Images, Description, Stock, In stock?.
  4. Загрузите CSV, на шаге сопоставления проверьте, что каждая колонка привязана к нужному полю.
  5. Запустите импорт и дождитесь отчёта.
  6. Проверьте несколько карточек из разных категорий.

Категории перечисляют через запятую, иерархию задают символом > (Посуда > Кружки). Повторная загрузка с тем же SKU обновляет существующий товар, а не создаёт новый. Для файлов XLSX, импорта по расписанию и сложных вариаций нужен плагин — например, WP All Import или аналоги.

Ограничение по размеру файла задаёт хостинг: при таймауте скрипта импорт обрывается на середине, поэтому каталог из нескольких тысяч позиций делят на части.

OpenCart, 1С-Битрикс и Joomla/VirtueMart

CMS Где искать импорт Форматы Особенности
OpenCart раздел импорта/экспорта в админке либо сторонний модуль XLSX во встроенном инструменте, CSV в модулях набор возможностей зависит от версии; ключ — sku или model, картинки по URL или из архива
1С-Битрикс Магазин → Импорт товаров CSV, обмен с 1С в формате CommerceML (XML) поля сопоставляются вручную, товары попадают в инфоблок, разделы и свойства должны существовать или создаваться по настройке
Joomla/VirtueMart импорт товаров в разделе товаров, расширения CSV соответствие колонок настраивается; для больших каталогов и регулярных обновлений используют расширения вроде CSVI

В 1С-Битрикс настройка импорта сохраняется, поэтому повторные загрузки прайса занимают минуты: достаточно заменить файл и запустить тот же профиль. Для обмена с 1С используется отдельный формат XML (CommerceML), и это не то же самое, что CSV-прайс из Excel.

В VirtueMart и OpenCart многое зависит от установленного модуля: разные расширения по-разному трактуют разделитель категорий, обязательность артикула и поведение при совпадении SKU. Перед массовой загрузкой сделайте тест на 5–10 товарах.

InSales и Tilda

InSales. Импорт находится в разделе товаров, принимает CSV и XLSX, позволяет сопоставить поля и обновлять позиции по артикулу. Дополнительно доступны выгрузка из 1С и работа через API — это удобнее, если прайс обновляется ежедневно.

Tilda. Каталог собирается блоками, а в разделе «Магазин» есть импорт товаров из CSV. Набор функций зависит от тарифа и текущей версии конструктора, поэтому перед подготовкой файла сверьтесь со справкой Tilda: перечень поддерживаемых полей и ограничения по количеству товаров там меняются чаще, чем у классических CMS. Для больших каталогов с частыми обновлениями обычно выбирают связку с внешним сервисом или API.

Проверка после импорта

Загрузка файла — не финал. Пройдите по короткому чек-листу:

  • откройте 5–10 карточек из разных категорий: название, цена, остаток, описание;
  • убедитесь, что изображения отображаются, а не подменяются заглушкой;
  • проверьте, что категории не задвоились и товар виден в меню каталога;
  • поищите товар по названию и артикулу через поиск на сайте;
  • сравните количество товаров в админке с числом строк в файле — расхождение указывает на пропущенные или отброшенные строки;
  • оформите тестовый заказ, чтобы убедиться, что цена и наличие подставляются верно.

Если часть товаров не появилась, включите лог импорта или отчёт об ошибках: обычно там указан номер строки и причина — незаполненное обязательное поле, дубль артикула или недопустимый символ в значении.

Частые вопросы

Что лучше сохранять для импорта — XLSX или CSV?

Если модуль импорта поддерживает оба формата, для загрузки надёжнее CSV в UTF-8: он одинаково читается разными системами и не зависит от версии Excel. XLSX удобнее для ручной правки большого каталога, но принимается не всеми CMS и часто требует плагина или конвертации.

Почему вместо русских букв появились кракозябры?

Файл сохранён в одной кодировке (обычно UTF-8), а магазин читает его в другой (например, Windows-1251). Укажите нужную кодировку в настройках импорта или пересохраните CSV в UTF-8 без BOM — BOM часто ломает ещё и название первой колонки.

Как обновить цены и остатки, не создавая дубли товаров?

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

Можно ли импортировать изображения, вставленные прямо в ячейки Excel?

Нет, картинки внутри файла модуль импорта не извлекает. Нужны публичные ссылки на изображения в интернете либо архив с файлами, названными по артикулам, если конкретный модуль умеет его распаковывать.

Сколько товаров можно загрузить за один раз?

Зависит от хостинга и модуля: ограничение задают лимит времени выполнения скрипта, объём памяти и максимальный размер загружаемого файла. Крупный каталог делят на части по несколько сотен или тысяч строк и загружают последовательно.

Нужен ли плагин для импорта в WooCommerce?

Для CSV достаточно встроенного импорта в разделе товаров. Плагины нужны, если каталог в XLSX, требуется регулярное обновление по расписанию, импорт из XML-фидов или тонкое сопоставление свойств и вариаций.

Материал подготовлен редакцией справочника Торох и носит справочный характер: интерфейсы программ и настройки серверов зависят от версии. Нашли неточность? Напишите нам.

Читайте также

Другие разделы