Импорт товаров из Excel в интернет-магазин: подготовка прайса и загрузка
Разбираем, как привести прайс-лист в Excel или CSV к виду, который примет модуль импорта: обязательные колонки, категории, свойства, ссылки на изображения. Отдельно — сохранение файла в нужной кодировке, борьба с разделителями и пошаговая загрузка товаров в WooCommerce, OpenCart, 1С-Битрикс, Joomla/VirtueMart, InSales и Tilda.
Содержание
Коротко: как загрузить товары из Excel в интернет-магазин
- Соберите данные в одну таблицу. Сведите товары, цены, остатки и ссылки на изображения в один лист без объединённых ячеек, скрытых строк и итоговых строк в конце файла.
- Приведите колонки к шаблону магазина. Скачайте образец файла импорта в админке вашей CMS или плагина и переименуйте заголовки колонок так, как требует этот шаблон.
- Сохраните файл в нужном формате и кодировке. Для CSV выбирайте UTF-8 и тот разделитель (запятая или точка с запятой), который указан в настройках импорта; артикулы и штрихкоды храните как текст.
- Загрузите файл и сопоставьте колонки. В разделе импорта выберите файл, на шаге сопоставления укажите, какая колонка соответствует названию, цене, артикулу, категории и изображению.
- Проверьте результат на нескольких товарах. Откройте карточки из разных категорий, сверьте цену, остаток, картинку и адрес страницы, затем проверьте поиск и оформление тестового заказа.
Что подготовить к импорту
Импорт товаров из 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, магазин не заберёт. Работают два подхода:
- Ссылка на изображение. В ячейке — полный адрес вида
https://example.ru/img/a-1001.jpg. Требования: абсолютный URL, доступность без авторизации, латиница в имени файла, отсутствие пробелов. Несколько фото перечисляют через запятую в одной колонке (так это устроено в WooCommerce) либо разносят по колонкамimage,image2,image3, если модуль это поддерживает. - Архив с файлами по артикулам. Часть модулей умеет распаковывать 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 и не требует плагинов.
- Откройте Товары → Все товары → Импорт.
- Скачайте образец файла: он задаёт точные имена колонок для вашей версии.
- Заполните обязательные поля:
Name,SKU,Regular price,Categories,Images,Description,Stock,In stock?. - Загрузите CSV, на шаге сопоставления проверьте, что каждая колонка привязана к нужному полю.
- Запустите импорт и дождитесь отчёта.
- Проверьте несколько карточек из разных категорий.
Категории перечисляют через запятую, иерархию задают символом > (Посуда > Кружки). Повторная загрузка с тем же 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-фидов или тонкое сопоставление свойств и вариаций.
Материал подготовлен редакцией справочника Торох и носит справочный характер: интерфейсы программ и настройки серверов зависят от версии. Нашли неточность? Напишите нам.