如何从 Excel 打印带条码的标签
数据你已经有了。公司的某个地方一定有一张电子表格,里面存着 SKU、EAN、产品名称和价格——可能是手工维护的,从 ERP 导出的,或者供应商发过来的。你需要的则是另一半:从打印机输出、每一张都带有可扫描条码的标签。
本指南将端到端地走完这项任务。你会拿到一张电子表格,先清理它,让条码值在流转过程中保持原样,再把列绑定到标签布局上,然后发送打印任务——既可以通过 Web UI,也可以通过脚本。整个工作流使用 Next Generation Label Printing System(LPSNG)作为托管式标签平台,因此你无需编写打印机控制命令,也无需手动摆放条码模块。
你将构建什么,以及它为什么可行
目标:Excel 中的一行 = 一张印有可用条码的标签。
整个工作流可以清晰地分为两半:
- Excel 提供数据。 诸如
sku、ean、product_name、price这样的列。只放原始值。 - 标签平台提供布局和条码渲染。 绑定到
ean的条码字段会在打印时使用你选择的符号体系进行渲染。
这种分工正是它如此可靠的原因。条码不是粘贴到单元格里的图片——它们是在打印时根据字段值生成的。你的电子表格只需要提供值,不需要提供编码。改动单元格中的一个数字,下一次打印任务就会生成一个不同但有效的条码。
这是托管式路径。硬核做法——自己生成条码位图,并向热敏打印机推送原始命令——虽然可行,但会绕过布局引擎、任务队列,以及你本来可以免费获得的所有校验。
前提条件:电子表格、标签平台和访问权限
开始之前,请确保你具备:
- 一个 Excel 文件,包含一行表头,每张标签对应一行数据。列涵盖你想打印的所有内容:产品名称、价格、条码值以及其他任何内容。
- 一个 LPSNG 账户或 Embedded Edition 安装,以及标签工作室中的一个标签布局——无论是你创建的,还是可以编辑的现有布局。
- 提前确定好的条码符号体系,从 条码格式页面 中记录的受支持一维和二维格式中选择。选择你的扫描器以及零售或物流合作伙伴实际期望的格式。
- 用于自动化打印: Web 服务 API 的 OAuth2 凭据,或用于命令行批处理任务的 LPSNG Player。
- 可选阅读: Excel 接口文档,其中介绍了如何将 Excel 文件同时用作数据文件和查找文件。
如果你仍在决定托管式平台是否适合你的环境,云端标签打印与桌面标签软件对比 涵盖了这方面的内容。
第 1 步:为标签打印准备 Excel 数据
这一步很枯燥,但大多数条码故障都源于此。
重要的规则:
- 一行表头,每张标签一行数据。 不要合并单元格,中间不要有空行,不要有合计行。
- 将条码值存储为文本。 Excel 会很乐意把
0049012345678变成49012345678或4.90123E+12。要在粘贴或导入之前将列格式设为文本,而不是之后。 - 如果人类可读文本应与编码值不同,请为其保留单独的列。
- 不要有尾随空格。 它们会被编码为字符。
用 openpyxl 快速清理一遍,可以找出被格式化为数字的列:
from openpyxl import load_workbook
wb = load_workbook("items.xlsx")
ws = wb.active
# Column C holds the barcode value. Force text, strip whitespace.
for (cell,) in ws.iter_rows(min_row=2, min_col=3, max_col=3):
if cell.value is None:
continue
cell.number_format = "@"
cell.value = str(cell.value).strip()
wb.save("items_clean.xlsx")
将清理后的文件保存到 LPSNG 可以访问的位置:通过 Web UI 上传,或者如果你的工作流从共享位置拉取文件,则通过 Excel 接口引用它。
第 2 步:创建或打开带有条码字段的标签布局
在标签工作室中打开你的布局。
- 向画布添加一个条码元素。
- 将其绑定到存放条码值的 Excel 列——例如
ean。 - 从受支持的格式中选择符号体系。 一维格式如 Code 128 或 EAN,或二维格式如 QR。平台会在打印时渲染它,因此该元素保持为活动字段,而不是静态图形。
- 添加文本字段用于产品名称、价格和任何其他列,将每个字段映射到其源列。
- 调整条码的大小和位置,在其周围留出足够的静区。接触标签边缘的条码就是扫描效果差的条码。
可选地,如果值在打印前需要转换——格式化价格、填充商品编号、推导校验位——可以为字段附加 Python 字段脚本。Python API 允许脚本块在打印前访问和修改字段的值:
# Sketch only — see the Python API docs for the exact field object
# and entry point used by your LPSNG version.
raw = field.value
field.value = f"{float(raw):.2f} EUR"
如果你对脚本不熟悉,带 Python 脚本的标签设计软件:可以期待什么 会让你了解字段脚本能做什么、不能做什么。
第 3 步:将 Excel 数据连接到布局
现在将电子表格映射到布局。使用 Excel 接口时,文件会成为一个数据文件:你只需将列映射到标签字段一次,该映射就可以复用于针对同一布局的每个未来任务。
一个货架标签的映射可能如下所示:
| 标签字段 | Excel 列 | 类型 |
|---|---|---|
product_name |
A — Product |
文本 |
price |
D — Price |
文本(由字段脚本格式化) |
barcode |
C — EAN |
条码,EAN-13 |
article_no |
B — SKU |
文本 |
在这个阶段有两点值得了解:
- 查找文件。 如果你的布局需要行本身没有的值,请将第二个 Excel 文件配置为查找文件,以 SKU 之类的列作为键。然后字段会从键列填充,而不是从行填充。
- 订单特定标签。 相同的数据映射也适用于履约场景中的客户特定和产品特定标签——行中只需同时携带客户和订单列即可。
在打印任何内容之前,在标签工作室中预览三到四条记录。检查条码是否渲染、其下方的值是否与人类可读文本匹配,以及长产品名称是否与条码发生碰撞。
第 4 步:打印或渲染标签
有三条路径,取决于你想要多少自动化。
手动路径——Web UI。 选择 Excel 数据源,选择布局,然后将任务发送到任务队列。从那里,它会渲染为 PDF,或直接发送到打印机。
自动化路径——Web 服务 API。 完成 OAuth2 注册流程后,你的系统会持有一个令牌,可以直接提交打印任务。下面的脚本仅作说明;确切的端点路径和负载字段请参阅 Web 服务文档。
export LPSNG_API_BASE="https://<your-lpsng-host>"
curl -sS -X POST "$LPSNG_API_BASE/<print-job-endpoint>" \
-H "Authorization: Bearer $LPSNG_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d @job.json
{
"layout": "retail-shelf-label",
"dataFile": "items_clean.xlsx",
"output": "pdf",
"copies": 1
}
该 API 还可以将单个标签渲染为 PDF 或 PNG,并可以触发直接打印——当你希望在提交到纸张之前在 Web 应用中预览时,这很有用。关于渲染方面的详细信息,请参阅如何通过标签打印 API 将标签渲染为 PDF 或 PNG。
批处理路径——LPSNG Player。 Player 是一个独立的命令行打印引擎:输入包加数据,输出 PDF、PNG、JSON、打印输出或 ESL 更新。非常适合在车间机器上运行夜间任务。
# Flags are illustrative — confirm the current syntax in the Player docs.
lpsng-player \
--package ./retail-shelf-label.lpsng \
--data ./items_clean.xlsx \
--out ./out \
--format pdf
如果目的地是货架而不是纸张,命令形式相同,输出不同——Player 也可以发出 ESL 更新。这条路径在用于 ESL 更新的供应商中立 JSON 接口中有所介绍。
第 5 步:验证打印出的条码
不要发出未经扫描的批次。
- 使用真实扫描器扫描样本,而不是手机摄像头应用。瞄准该批次的第一张、中间和最后一张标签,以及任何值看起来不寻常的行。
- 检查前导零。
0049...必须返回为0049...。如果扫描器报告的值更短,说明 Excel 列在上游某处被当作数字处理了。 - 检查特殊字符。 连字符、斜杠和变音符号是错误导入的常见受害者。
- 将人类可读文本与编码值进行对比,在每张抽样标签上。它们应该讲述同样的内容。
- 检查打印本身。 对比度低、静区被裁切或条码因布局偏移而被挤压,即使屏幕上看起来没问题,在现场也会失败。
如果希望进行系统性的打印前检查,而不是打印后抽样,如何在打印标签前检查条码 有更深入的介绍。
排查常见问题
条码无法扫描。 通常是符号体系不匹配,或者值包含所选格式无法编码的字符。切换格式,或清理数据。验证扫描器支持你选择的格式。
前导零丢失了。 Excel 列是数字格式。重新格式化为文本,重新输入或重新导入值,然后重新上传。在标签平台中修复是不可能的——数字已经丢失了。
标签打印出来完全没有条码。 条码字段没有绑定到正确的列,或者该列在相关行中为空。打开预览并逐条记录检查,而不是只检查第一条。
打印任务失败。 对于 API 任务,检查 OAuth2 令牌是否仍然有效,以及请求是否携带了平台可以解析的数据源。对于 Player 任务,确认包存在,并且数据文件包含在调用中。
布局在热敏打印机上发生偏移。 验证打印机是否受支持,并检查布局中配置的标签尺寸与物理介质是否一致。如果你的设置通过 Google Cloud Print 路由,云打印变通方案 解决了已知限制。
常见问题
我需要安装打印机驱动程序才能从 Excel 打印带条码的标签吗? 不需要。使用 Next Generation Label Printing System,你上传或引用 Excel 文件,并通过 Web UI 或 Web 服务 API 发送打印任务;平台会生成 PDF 或将任务发送到打印机。LPSNG Player 也可以从包和数据文件生成 PDF、PNG 或直接打印输出。
我可以将同一个 Excel 文件同时用于标签数据和查找值吗? 可以。Excel 接口支持将 Excel 文件用作数据文件和查找文件。你可以将列映射到标签字段,还可以配置查找文件,以便从键列填充字段。
LPSNG 可以从 Excel 数据生成哪些条码格式? LPSNG 支持一系列一维和二维条码格式。确切的列表记录在条码格式页面上;你在向标签布局添加条码字段时选择符号体系。
我可以在不打开 Web UI 的情况下从 Excel 自动化打印吗? 可以。你可以使用 OAuth2 身份验证通过 Web 服务 API 提交打印任务,或者使用 LPSNG Player 作为独立的命令行打印引擎,它接收包和数据文件,并输出 PDF、PNG、JSON、打印或 ESL 更新。
结论:从电子表格到可扫描标签
回顾很短:准备 Excel 文件,让值以文本形式保留,将条码字段绑定到布局中的正确列,映射列一次,通过 UI、API 或 Player 打印,然后在批次离开大楼之前扫描样本。
结构上的优势在于,条码渲染和任务管理都在平台内部完成。你永远不需要自己计算校验位,永远不需要编写打印机命令,也永远不需要怀疑画布上的元素是否会编码与单元格中包含的值相同的值。
接下来的步骤,取决于你的工作流从这里走向何方:通过 API 渲染标签 用于嵌入式预览,阅读 Python 字段脚本 了解值转换,或者如果货架是数字的,则转向 ESL 更新。不确定哪个版本适合?从用例概览开始——每个版本都包含 Web UI、标签工作室、任务队列、PDF 生成和 Web 服务接口。
相关文章
- 云端标签打印与桌面标签软件:关键区别
- 用于 ESL 更新的供应商中立 JSON 接口
- 如何在打印标签前检查条码
