Генератор последовательности штрих-кодов
Файл в Excel позволяет сделать текст последовательности кодов штрих-кодов EAN13 от начального значения до заданного, при этом штрих-код рассчитывается корректно, с последней контрольной цифрой.
Клиенту понадобилось напечатать тираж подарочных карт. При этом в типографию нужно было передать штрих-код каждой подарочной карты. Онлайн-генератора последовательности штрих-кодов не нашел, поэтому использовал генерацию в Excel-файле.
В файле нужно задать 12 цифр начального штрих-кода, количество штрих-кодов (максимум 10.000, но можно увеличить количество строк в файле) и шаг (по умолчанию 1):
Формула Excel для расчета штрих-кода:
=ЕСЛИ(B11="";"";B11*10+ОСТАТ(10-ОСТАТ(3*(ПСТР(B11;2;1)+ПСТР(B11;4;1)+ПСТР(B11;6;1)+ПСТР(B11;8;1)+ПСТР(B11;10;1)+ПСТР(B11;12;1))+ПСТР(B11;1;1)+ПСТР(B11;3;1)+ПСТР(B11;5;1)+ПСТР(B11;7;1)+ПСТР(B11;9;1)+ПСТР(B11;11;1);10);10))
В итоге получится файл, из которого можно скопировать готовый список штрих-кодов с контрольным символом и отправить его в типографию.
Для генерации штрих-кода можно использовать сайт barcode.tec-it.com/ru/EAN13. Там даже есть возможность сгенерировать последовательность штрих-кодов:
Однако, к сожалению, нельзя получить текст со списком штрих-кодов, в скачиваемом архиве только картинки штрих-кодов:
Выглядят они так:
Первая ссылка на EAN13 Python выдает либу для питона которая генерит баркоды. Command line инструменты рулят в целом. Можно соединять в pipeline-ы, запускать в фоне и т.д.
Эксель, 1С — для таких задач это стрельба из пушек по вробьям. Из консольки быстрей.
В общем, учи Питон.
может и быстрее, да вот только продвинутых пользователей Excel больше, чем начинающих программистов Питона. 😉
Уловили, о чем я?
имена файлов это ж и есть текст штрихкодов, в powershell пишешь gci . | %{ $_.basename } и вот тебе список
нет, там в именах файлов нет последней 13-й контрольной цифры.
ну так рассчитал бы
function checksum_digit([int[]]$code) { $code | % { $sum = 0; $p = 1 } { $sum += $_ * $p; $p = 4 — $p } { 10 — ($sum % 10) } }
gci . | %{ $n, $code = $_.Basename -split ‘_’; $code = [int[]][string[]]$code[0..$code.Length]; -join $code + (checksum_digit $code) }
я могу и на 1С рассчитать. Но захотелось на Эксель. Считайте причудой.
ага, у тебя отчетливо такое прослеживается. вместо того, чтобы взять готовое решение и добавить к нему полезную дельту , начинаешь переизобретать велосипед, к тому же неполноценный
О каком готовом решении идет речь? Я первым делом сходил на инфостарт и потратил совсем немного времени, чтобы написать этот генератор в Экселе. И это время мне оплатили.
win-win, нет?