← All posts

2026-10-20

如何从Excel数据文件和查找表创建标签

如何从Excel数据文件和查找表创建标签
pdf labels barcodes label merge browser based graphical layout editor google sheets addin microsoft excel addon electronic shelf labels esl barcode3 labels label editor

如何从 Excel 数据文件和查找表创建标签

你的订单在 Excel 里。你的产品名称在 Excel 里。你的地址在 Excel 里。然而,每次你需要标签时,总有人打开电子表格,复制一行,粘贴到模板中,保存为 PDF,然后重复——四十次。更糟的是,有人在两年前写了一个脆弱的脚本,每当列名被重命名时就会崩溃。

本文介绍另一种方案:使用一个 Excel 文件作为数据源,用第二个 Excel 文件(或第二个工作表)作为查找表,然后生成成品标签,输出为多页 PDF、单独的 PNG 或直接发送到打印机——无需复制粘贴,也无需维护解析器。

最终你将获得:

  • 一个数据文件,每行对应一个标签,表头行将成为你的字段名称。
  • 一个查找表,将 SKU 等键解析为完整的产品名称或类别。
  • 在 LPSNG 标签工作室中设计的标签布局,字段已映射到电子表格列。
  • 一个可重复执行的作业:修改电子表格,重新运行,获得新标签。

Next Generation Label Printing System 为你处理渲染、作业队列和输出。如果你想用 Python 转换单个字段值而不是简单映射,这在 面向 Python 开发者的标签打印 API:字段脚本 中单独介绍——本文专注于电子表格方案。

前提条件:开始之前你需要什么

  • 一个具有标签工作室和作业队列访问权限的 RSJ LPSNG 版本。 Cloud Solution、Embedded Edition(如 Raspberry Pi 等单板计算机)和 Enterprise Features 都提供相同的核心功能。
  • 你的 Excel 数据文件,每行对应一个标签——例如商品编号、描述、价格。
  • 可选的单独查找文件(或单独的工作表),将键——例如商品编号——映射到你实际想要出现在标签上的文本,如完整产品名称或类别。
  • 一个标签布局。 可以是你在 LPSNG 标签工作室中构建的布局,也可以是你想用电子表格数据填充的现有布局。
  • 清楚知道哪一列属于哪个字段。 如有需要,先在纸上画出来;这里花五分钟可以节省一小时的重新映射时间。

Excel 接口的文档位于 lpsng.rsj.de/en/excel。除了浏览器之外无需本地安装;打印机设置是唯一需要在本地完成的部分。

步骤 1:准备 Excel 数据文件和查找表

将数据文件结构化为带有表头行的格式,因为每个列标题都会成为一个命名字段,供后续映射使用。

SKU,Description,Price,Quantity
A-1001,Steel bracket 40mm,4.90,1
A-1002,Steel bracket 60mm,5.40,2
A-1003,Aluminium bracket 40mm,6.10,1

然后构建查找表,作为单独的工作表或文件,包含一个键列和要合并的值:

[
  { "SKU": "A-1001", "ProductName": "Steel Bracket, 40 mm, galvanised", "Category": "Hardware" },
  { "SKU": "A-1002", "ProductName": "Steel Bracket, 60 mm, galvanised", "Category": "Hardware" },
  { "SKU": "A-1003", "ProductName": "Aluminium Bracket, 40 mm",        "Category": "Hardware" }
]

几条规则可以避免大多数下游问题:

  • 保持键一致。 两侧的拼写、格式、大小写都相同。
  • 移除合并单元格和空行。 它们会破坏列映射,并可能导致检测到的表头行发生偏移。
  • 注意前导零。 如果 SKU 是 0042,请在 Excel 中将该列强制设为文本——否则键会变成 42,查找会静默失败。
  • 一个文件就够了。 你可以将数据和查找表放在同一个工作簿的不同工作表中。

上传之前,用 pandas 快速做一次健全性检查,可以尽早发现键不匹配的问题:

import pandas as pd

data   = pd.read_excel("orders-october.xlsx", sheet_name="Data",     dtype=str)
lookup = pd.read_excel("orders-october.xlsx", sheet_name="Products", dtype=str)

# Normalise the join key identically on both sides.
for df in (data, lookup):
    df["SKU"] = df["SKU"].str.strip().str.upper()

orphans = sorted(set(data["SKU"]) - set(lookup["SKU"]))
print(f"{len(data)} data rows, {len(orphans)} keys without a lookup entry")
print(orphans)

如果 orphans 为空,说明你的查找表可以为每一行解析出结果。

步骤 2:在 LPSNG 中设计或打开你的标签布局

打开 LPSNG 标签工作室,创建新布局或打开现有布局。

  • 为描述和价格添加文本字段,为商品编号添加条码字段,如果需要徽标或产品照片,添加图像字段。
  • 为每个字段取有意义的名称——field_product_name、field_price、field_sku——这样六个月后从电子表格列到标签字段的映射仍然一目了然。关于条码方面,支持的 1D 和 2D 格式列在 lpsng.rsj.de/en/barcode。
  • 预留足够的空间。 电子表格中的值并不统一:第一行可能是简短的描述,第五十行可能换行成三行。宁可留出空间,也不要事后缩小字体。
  • 只在需要时转换值。 格式化价格、拼接两列或计算校验位,这些工作应交给附加到字段的 Python 脚本块来完成,详见 Python API 参考文档 lpsng.rsj.de/api。

保存布局。它将成为 Excel 文件中每一行的模板——设计工作只需做一次。

步骤 3:将 Excel 列映射到标签字段

在 LPSNG Excel 接口中,上传或选择你的工作簿作为数据源,然后将每一列分配给一个字段。对于查找值,指定查找工作表或文件以及键列;LPSNG 会在渲染之前逐行解析查找,因此标签字段接收到的是合并后的值,而不是原始键。

映射界面表达的内容大致如下——界面会为你生成配置:

# Illustrative shape of the mapping you configure in the Excel interface.
layout: product-label
data_source:
  file: orders-october.xlsx
  sheet: Data
fields:
  field_sku:         SKU
  field_description: Description
  field_price:       Price
lookup:
  file: orders-october.xlsx
  sheet: Products
  key: SKU
  merge:
    field_product_name: ProductName
    field_category:     Category
output:
  format: pdf

然后用前几行预览映射结果。预览是你发现列偏移或价格落入描述字段的地方——在浪费一整卷标签之前。

这是编写自定义解析器或搭建命令行流水线的托管替代方案:映射本身不需要任何代码。

步骤 4:将标签渲染为 PDF、PNG 或发送到打印机

选择你的输出方式:

  • 多页 PDF——适合存档、通过电子邮件发送或交给打印店。
  • 单独的 PNG 图像——用于嵌入另一个系统或 Web 前端。
  • 直接打印——选择打印机,作业队列将每一行作为单独的标签处理。
  • JSON——当下游系统需要渲染结果或解析后的数据而非纸张时使用。

对于自动化,可以从代码驱动相同的作业。Web 服务 API 提交打印作业,将单个标签渲染为 PDF 或 PNG,并支持直接打印;身份验证使用 OAuth2,文档位于 lpsng.rsj.de/en/webservice。独立的 LPSNG Player 接收一个包加数据,然后输出 PDF、PNG、JSON 或发送到打印机:

# Endpoint paths, flags and payload fields are documented on the web service
# and Player pages — the shape below is illustrative only.
curl -X POST "https://<your-lpsng-host>/…"   -H "Authorization: Bearer $LPSNG_TOKEN"   -d '{ "layout": "product-label", "data": "orders-october.xlsx", "output": "pdf" }'

lpsng-player   --package product-label   --data orders-october.xlsx   --output pdf

如果你的团队使用的是 Google Sheets 而不是 Excel,Google Sheets 插件 在浏览器中提供相同的创建和打印工作流。而且所有渲染都在服务器端进行——除了打印机设置之外,你无需在本地安装字体或驱动程序。

步骤 5:验证输出并检查查找

渲染成功并不等于渲染正确。检查产物:

  • 抽查几个标签与源行进行对比——第一行、最后一行以及任何格式异常的行。
  • 确认查找已解析。 如果标签显示 A-1002 而你期望的是 “Steel Bracket, 60 mm, galvanised”,说明键没有匹配上。
  • 用阅读器扫描几个条码,将解码值与预期数据进行比较。如何在打印标签前验证条码 提供了更完整的检查清单。
  • 查看作业队列。 失败或被跳过的行会出现在那里,通常附带出错的值或脚本错误。
  • 如果你附加了字段脚本,确认转换已应用——错误的日期格式很容易被忽视,直到有人在货架上读到标签才会发现。

常见问题排查

标签打印出来字段为空。 检查列标题是否与映射的字段名称完全匹配,以及数据文件的表头上方没有空行。顶部有一个空行就会导致所有内容偏移。

查找没有返回任何结果。 键列必须在大小写、前后空格和前导零方面都匹配。按照步骤 1 中所示对两侧进行规范化。

条码扫描不正确。 验证条码字段是否映射到了正确的列,以及所选格式能否承载你要编码的数据长度。

只有部分行渲染失败。 检查作业队列中的错误消息。常见原因是布局所需的某个值缺失,或字段块内部的脚本错误。

打印机没有收到任何内容。 确认打印机在线,并且在输出设置中已被选中。对于 Google Cloud Print 场景,请参阅 云打印 文档。

常见问题

我可以将同一个 Excel 文件同时用于数据和查找吗? 可以。将数据放在一个工作表中,将查找表放在同一工作簿的另一个工作表中。映射时,为每个角色选择相应的工作表。只需确保用于查找的键列在两个工作表中保持一致即可。

我需要编写代码来将 Excel 列映射到标签字段吗? 不需要。LPSNG Excel 接口提供了一个映射界面,你可以将电子表格列分配给标签字段。只有当你想要转换值时——例如格式化价格或拼接字段——才需要代码,你可以通过附加到字段的 Python 脚本块来实现(参见 Python API 文档)。

从 Excel 数据可以生成哪些输出格式? 你可以生成多页 PDF、单独的 PNG 图像、将作业直接发送到打印机,或输出 JSON。Web 服务 API 和 LPSNG Player 支持这些输出,因此你可以将渲染集成到你自己的应用程序中。

当 Excel 文件发生变化时,如何更新标签? 只需重新上传更新后的 Excel 文件,或用新数据重新运行业务。LPSNG 会应用相同的标签布局和映射,因此你无需重新设计任何内容。作业队列将处理新行并生成更新后的标签。

结语:从电子表格到货架就绪的标签

工作流程很短:准备 Excel 数据和查找表,设计一次布局,将列映射到字段,渲染,验证。这个清单中没有任何一项需要你编写解析器或照看脚本。

Next Generation Label Printing System 承担了繁重的工作——渲染、作业队列、查找解析和输出——这样你就可以把时间花在数据上,而不是管道上。无论你生产十个标签还是一万个标签,它的工作方式都一样,而且 Web 服务 API 让其他系统可以通过编程方式触发相同的作业。

在你的 LPSNG 版本中试用 Excel 接口——云端、嵌入式或企业版——如果你的团队更喜欢在浏览器中使用电子表格,不妨看看 Google Sheets 插件,在浏览器中体验相同的工作流。

相关文章

EU label: AI-generated content