Ведущие нули в артикулах и штрихкодах: как их не потерять

Сценарий знаком каждому, кто работает с прайсами: поставщик прислал CSV, вы открыли его двойным кликом — и колонка артикулов «001234» стала «1234», а штрихкоды «0460123456789» превратились в «4,6E+12». Сохраните такой файл — и нули пропадут навсегда. Разберём, почему Excel это делает, чем это грозит загрузке на площадку и как открывать такие файлы без потерь.

Почему Excel обрезает ведущие нули

У ячеек Excel есть формат по умолчанию — «Общий». Когда вы открываете файл двойным кликом, Excel читает каждое значение и решает сам, что с ним делать: похоже на число — становится числом, похоже на дату — датой, остальное остаётся текстом.

Строка «001234» выглядит как число, и Excel приводит её к числу 1234: ведущие нули в числе не имеют значения, поэтому отбрасываются. Со штрихкодом «0460123456789» происходит то же самое, только хуже: это число из 13 цифр, оно не помещается в стандартный вид и отображается в экспоненциальной форме — «4,6E+12». А если цифр больше 15, Excel и вовсе округляет хвост до нулей: точность числового типа ограничена 15 разрядами.

Ключевое: артикул и штрихкод — это коды, а не количества. Их нельзя складывать и усреднять, но Excel об этом не знает. Для него «001234» — то же самое, что 1234, только с лишними символами.

Колонка артикулов в Excel: значения «001234» превратились в «1234», штрихкоды — в «4,6E+12»
Двойной клик по CSV: ведущие нули исчезли, штрихкод стал экспоненциальным числом

Чем это опасно на практике

  • Артикул не сопоставляется. В учётной системе товар заведён как «001234», в файле — «1234». Поиск по артикулу не находит позицию, цены не обновляются, товар выпадает из выгрузки. Подробнее о требованиях к этому полю — в статье про артикул продавца.
  • Штрихкод не бьётся. Маркетплейс сверяет штрихкод посимвольно: «460123456789» вместо «0460123456789» — это другой код, строка отклоняется с ошибкой валидации. Про форматы кодов в прайсе — в статье про штрихкоды в прайсе.
  • Дублей не видно. «001234» и «1234» после обрезки нулей склеиваются — при загрузке получаете конфликты дубликатов, которых в исходнике не было.

Как открыть файл в Excel без потерь

Главное правило: не открывайте CSV двойным кликом. Используйте импорт, где тип колонки задаётся вручную:

  1. Откройте пустой Excel → вкладка «Данные» → «Получить данные» → «Из текстового/CSV-файла».
  2. В окне предпросмотра нажмите «Преобразовать данные» (не «Загрузить»).
  3. Выделите колонки артикула и штрихкода и задайте им тип «Текст».
  4. Нажмите «Закрыть и загрузить».

Текстовый тип отключает автоопределение: «001234» останется «001234», штрихкод — строкой из 13 цифр. Этот же приём решает и проблему с кракозябрами в кодировке — она разобрана в статье про открытие CSV в Excel.

Окно импорта данных в Excel: для колонки артикула выбран текстовый тип данных
Импорт с типом колонки «Текст» — ведущие нули на месте

Минус способа — он ручной и одноразовый: при следующем открытии процедуру повторяют. А если файл ещё и нужно подготовить к загрузке (переименовать колонки, отфильтровать строки, добавить наценку), ручной импорт — только начало пути.

Короткий путь: конвертер

В EasyExcel значения из загруженного файла хранятся как текст и не проходят числовых преобразований. Артикул «001234» в превью выглядит ровно так же, как в исходнике, и так же попадает в результат — ни одна колонка не превращается в число сама по себе.

Превью прайса в конвертере: артикулы с ведущими нулями и штрихкоды сохранены как в исходном файле
Превью в конвертере: «001234» и «0460123456789» — как в файле поставщика

Дальше файл проходит обычные шаги: «Структура» — указать, с какой строки начинается таблица; «Колонки» — переименовать поля под шаблон площадки, при необходимости применить «Умножить» к цене (к колонке цены, не к артикулу); «Фильтры» — отбросить пустые строки и позиции без остатков; «Экспорт». На выходе — XLSX со значениями или CSV в UTF-8 с точкой с запятой, где артикулы и штрихкоды сохранены посимвольно. Попробовать можно на странице конвертации в CSV: бесплатно и без регистрации доступны файлы до 2 МБ.

Если нули уже потеряны

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

Штрихкоды EAN-13 и EAN-8

У них фиксированная длина — 13 и 8 цифр. Допишите нули слева до нужной длины:

  • Формулой рядом: =ТЕКСТ(A2;"0000000000000") для EAN-13 (13 нулей в шаблоне), затем скопируйте результат и вставьте как значения.
  • Или форматом ячеек: выделите колонку → Ctrl+1 → «Все форматы» → тип 0000000000000. Учтите: формат меняет только отображение, в самой ячейке остаётся число — при экспорте в CSV нули снова пропадут. Надёжнее формула с преобразованием в значения.

Артикулы без фиксированной длины

Если артикулы поставщика имеют разную длину («00123», «0004567»), восстановить нули по формуле невозможно: вы не знаете, сколько их было. Единственный выход — запросить исходный файл у поставщика и открыть его правильно (импортом или конвертером). Это же повод попросить поставщика присылать файл в XLSX: в нём текстовые значения хранятся как текст, и обрезка происходит только на этапе экспорта в CSV, а не при открытии.

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

Почему число показывается как 4,6E+12 и как вернуть нормальный вид?

Это экспоненциальная запись: Excel так показывает числа, которые не влезают в ширину колонки или превышают 11–12 разрядов. Само значение при этом уже стало числом, и ведущий ноль потерян. Верните исходник и откройте файл заново с текстовым типом колонки — простое растягивание колонки ничего не исправит.

Поможет ли апостроф перед значением?

Да, но только при ручном вводе: '001234 с апострофом Excel хранит как текст и нули не трогает. Для готового файла на тысячу строк это неприменимо — нужен импорт с текстовым типом колонки или обработка в конвертере.

В XLSX от поставщика нули тоже могут пропасть?

В самом XLSX — нет: там тип каждой ячейки задан явно, и текстовый артикул остаётся текстом. Нули пропадают на стыках: когда поставщик сам выгрузил файл через Excel неправильно или когда вы пересохраняете XLSX в CSV двойным кликом. Всегда проверяйте колонку артикулов в исходнике.

Конвертер точно не превратит артикул в число?

Нет. Значения колонок переносятся как текст, без автоопределения типов, а числовые действия вроде «Умножить» или «Округлить» применяются только к тем колонкам, на которые вы их повесили вручную на шаге «Колонки». Артикулы и штрихкоды эти действия не затрагивают.