条形码批量生成:编码规则设计、序号命名和防重复策略

· 约 3 分钟 📊 条形码批量生成

一次生成几百个条形码,和生成一个的技术门槛差不多——但批量场景里,编号设计文件管理才是真正的难题。编号设计错了,后续追溯、防重、系统对接都会麻烦。

编号结构设计原则

好的条形码编号满足三个条件:唯一、可读、可追溯

推荐结构:[前缀]-[日期]-[批次序号]

示例:WH-20240315-00001
      ^^  ^^^^^^^^  ^^^^^
      仓库  日期     批次内序号(补零)

前缀:2-4 个字母,标识业务线、仓库、产品线。同一系统里前缀不重复。

场景前缀示例
仓库货位WH / BJ01
活动门票TK + 活动编号
资产标签IT / FA
订单追踪ORD

日期YYYYMMDD 格式(8 位),按字母排序 = 按时间排序,批次天然隔离。

序号:从 00001 开始,位数根据批次最大量决定(见 FAQ)。

批量流程

第一步:准备内容列表

在 Excel/Sheets 里生成序号列:

A列(编号内容)
WH-20240315-00001
WH-20240315-00002
WH-20240315-00003
...
WH-20240315-01000

Excel 生成序号技巧:A1 填 WH-20240315-,B1 填 =A1&TEXT(ROW(),"00000"),向下拖填。

注意纯数字的陷阱:如果编号是纯数字(如 EAN-13),Excel 默认列格式会把 0012345678901 变成 12345678901(去掉前导零)。解决:选中列 → 右键设置单元格格式 → 文本 → 重新填入数据。

第二步:粘入工具批量生成

把 A 列内容全选复制,粘进工具的文本框,每行一个编号,点生成。

第三步:文件命名和存档

批量生成的文件以条形码内容命名,例:

WH-20240315-00001.png
WH-20240315-00002.png
...

同目录维护一个 index.csv

barcode,item_name,location,created_at
WH-20240315-00001,联想笔记本,A区01货架,2024-03-15
WH-20240315-00002,戴尔显示器,A区02货架,2024-03-15

文件名 = CSV 主键,需要补打或重新生成时按文件名查 CSV 取内容。

防重复策略

批次隔离

日期作为批次标识,同日期内序号不超过上限,天然防止跨批次重复。即使明天再生成一批,前缀日期不同,编号不会撞。

系统侧去重

条形码贴到物品前,先在系统登记。扫描入库时:

  1. 扫码 → 查数据库,是否已存在?
  2. 已存在 → 拒绝,提示重复
  3. 不存在 → 入库,标记”已使用”

这一层是批量生成工具无法替代的,工具只负责生成图案,唯一性保证在后端。

防伪场景:一次性核销

条形码本身可被复制,配合后端才能防伪:

生成阶段:
  工具生成编号 → 写入数据库(状态: 未核销)→ 打印贴标

核销阶段:
  扫码 → 查数据库
    ├── 未核销 → 标记已核销,放行
    └── 已核销 → 报警,记录重复扫描时间和设备

升级版:编号由服务端使用 HMAC 签名,格式 WH-20240315-00001-{签名后6位}。扫码后本地验签,不需要联网查库也能识别伪造码(签名对不上)。

打印建议

批量打印时,不同用途的建议尺寸:

用途条形码宽条形码高标签纸规格
仓库货架(远距离扫)≥ 6cm≥ 2cm100×50mm
资产标签(近距离扫)≥ 3cm≥ 1.5cm50×25mm
快递单内嵌≥ 4cm≥ 1.5cm按快递单模板
活动门票≥ 5cm≥ 2cm按票面设计

导出 SVG 格式(矢量)比 PNG 更适合专业打印——SVG 放大不失真,交给印刷厂时直接用。

配套工具

❓ 常见问题

批量生成的编号如何保证不重复?

结构化编号比随机数更可靠。推荐格式:[前缀]-[日期]-[序号],例如 WH-20240315-00001WH-20240315-10000。前缀标识业务线或仓库,日期隔离不同批次,序号在批次内唯一。优点:(1) 批次隔离——不同日期不可能重叠;(2) 肉眼可读——操作员扫码后能直觉判断是哪天哪批;(3) 数据库查询友好——按前缀/日期分片索引。纯随机数(UUID)不容易重复但难追溯,不推荐用在物理标签。

序号要不要补零?补几位合适?

必须补零,位数按最大数量的位数加 1。原因:不补零时 110100 按字符串排序会乱序;补零后 001010100 排序正确。位数估算:(1) 最多 99 个 → 2 位(0199);(2) 最多 999 个 → 3 位(001999);(3) 最多 9999 个 → 4 位;(4) 如果不确定未来规模,多加一位留余量——从 5 位改 6 位时历史数据对不上很麻烦。工具的序号设置里直接填"位数"即可自动补零。

批量条形码文件怎么命名,方便和编号对应?

文件名直接用条形码内容。批量生成的每个 PNG 命名为 WH-20240315-00001.png,和条形码内容一一对应。原因:(1) 按文件名排序 = 按编号排序;(2) 需要重新生成某个码时直接知道内容;(3) 系统批量导入时文件名就是主键,不需要额外的映射表。如果需要关联其他信息(商品名、价格),维护一份 CSV,列是编号,商品名,价格,文件名是主键做 JOIN。

条形码能用来防伪吗?

普通条形码本身不防伪——任何人都能用同样的工具生成同样内容的条形码,扫出来内容一样。真正防伪需要配合后端系统:(1) 一次性核销——条形码内容是唯一序列号,扫描后在数据库标记"已核销",再次扫描报错;(2) 加密序列号——序列号由服务端用私钥签名生成,扫描后验签,伪造的号码签名验不过;(3) 绑定设备——序列号和激活设备 IMEI 绑定,换设备不认。单纯靠条形码图案是防不了伪的——图案可以复印、截图、重新打印。

从 Excel 批量导入条形码内容,格式有什么要求?

最简单格式:每行一个编号,第一列是条形码内容。工具支持直接粘贴多行文本或上传 CSV。注意事项:(1) 编号如果是纯数字,Excel 会自动把前导零去掉(00123123)——解决办法是把列格式设为"文本"再填数,或在工具里粘贴时选"文本格式";(2) EAN-13 的内容必须恰好 13 位,批量前先在 Excel 用 LEN() 函数验证每行长度;(3) 去掉空行,空行会生成空内容的条形码。

📊 打开 条形码批量生成 多行输入·name|content 自定义文件名·ZIP 打包下载