Python+SeaTable实现生成条形码图片并写入表格

洛溪
洛溪
发布时间:2026-10-15 | 4人浏览过
原创

本文介绍如何在SeaTable表格中利用Python脚本将文本列(如电话号码、准考证号)快速转换为条形码图片,并自动保存至图片列。通过配置python-barcode库参数,可自定义条码样式,结合页面设计插件实现准考证打印等场景,提升考务及业务处理效率。

无论是录入信息时配合扫码器进行数据录入,还是在核对环节利用扫码识别,亦或是其他需要生成条形码的场景,如何快速将表格中的数字或文本列转换为条形码图片?借助SeaTable表格中的Python脚本功能即可轻松实现。具体而言,可以将表格中的特定字段(例如身份证号、电话号码)转换为对应的条形码,并将其存储到图片列中。假设您有一张包含电话号码和条码图片两列的表格,需要将每一行的电话号码转换为条码并上传至“BarcodeImage”列,具体操作如下。

在 SeaTable 中用 Python 生成条形码

新建 Python 脚本

首先,在表格界面中点击“脚本”功能入口,创建一个新的 Python 脚本。

写入代码

随后在脚本编辑器中输入以下代码(若需在本地离线环境运行,请确保已安装 python-barcode 依赖包)。

import os
import time
import barcode
from barcode.writer import ImageWriter
from seatable_api import Base, context

api_token = context.api_token or "859ad340d9a2b11b067c11f43078992e14853af5"
server_url = context.server_url or "https://cloud.seatable.cn"

TEXT_COL = "PhoneNum"  # 需要转换成条码的列
BARCODE_IMAGE_COL = "BarcodeImage" # 图片列, 存储条码
TABLE_NAME = 'Table1'
BARCODE_TYPE = 'code128'

CUSTOM_OPTIONS = {
    "module_width": 0.2,       # 单个条纹的最小宽度, mm
    "module_height": 15.0,     # 条纹带的高度, mm
    "quiet_zone": 6.5,         # 图片两边与首尾两条纹之间的距离, mm
    "font_size": 10,           # 条纹底部文本的大小,pt
    "text_distance": 5.0,      # 条纹底部与条纹之间的距离, mm
}


CODE = barcode.get_barcode_class(BARCODE_TYPE)
base = Base(api_token, server_url)
base.auth()

def get_time_stamp():
    return str(int(time.time()*100000))

for row in base.list_rows(TABLE_NAME):
    # 如果图片列中已有内容, 则跳过
    if row.get(BARCODE_IMAGE_COL):
        continue
    # 如果电话号码列为空,则跳过
    if not row.get(TEXT_COL):
        continue

    try:
        row_id = row.get('_id')
        msg = str(row.get(TEXT_COL))

        # 生成条码对象
        code_img = CODE(msg, writer=ImageWriter())
        save_name = "%s_%s" % (row_id, get_time_stamp())

        # 保存为图片并暂存
        file_name = code_img.save("/tmp/%s" % save_name, options=CUSTOM_OPTIONS)

        # 将图片上传至 Base 表格
        info_dict = base.upload_local_file(file_name, name=None, file_type='image', replace=True)
        img_url = info_dict.get('url')
        row[BARCODE_IMAGE_COL] = [img_url]
        base.update_row('Table1', row_id, row)

        # 移除暂存文件
        os.remove(file_name)
    except Exception as error:
        print("error occured during barcode generate", error)
        continue

运行脚本

点击运行按钮执行脚本,待脚本执行完毕后,表格中的电话号码列将自动生成对应的条形码图片,并自动保存至条形码图片列,操作便捷高效。

设置条码参考

此外,若需调整条码条纹的长度或文本显示长度等细节,可通过修改脚本中 CUSTOM_OPTIONS 字典内的参数来实现。以下是一些常用参数示例:

默认模式

module_width 1mm

module_height 5mm

quiet_zone 0.5mm

font_size 6pt

text_distance 2

应用场景

前文介绍了如何将文本列的值转换为条形码,例如将长串准考证号转换为条形码图片。接下来探讨其实际应用方式。

打印条形码用于粘贴答题卡

当所有学生的准考证号均转换为条形码图片后,考务工作人员只需点击条形码图片列,即可批量下载所有条码。此时可利用 {列名} 引用字段内容,为所有生成的条形码自动命名,从而简化后续处理流程。

设计准考证页面用于识别信息

将学生姓名、照片及准考证条形码等信息整合至准考证页面设计中,用于扫码读取、信息核对及数据录入等场景,这是考务工作中较为常见的应用模式。此类数据的记录、处理及应用均可在 SeaTable 表格中快速完成。

在表格中添加页面设计插件,即可自定义设计多种页面模板。模板支持拖入行记录中的文本、数字、图片等字段信息。设计完成并保存后,支持一键打印当前行记录页面或批量打印所有页面。同时,可设置使用 {字段名} 引用字段内容,并一键下载为PDF格式文件。

总结

通过上述示例,是否让您发现了 SeaTable 在应用场景上的更多灵活性?需要注意的是,条码生成环节存在一个限制:一维条码本身不支持汉字转换,仅支持基本数字、字母及部分字符的转换。不过,这一限制已足以满足日常业务需求。总而言之,基于 SeaTable 丰富的功能生态,结合 Python 脚本的强大能力,能够帮助我们实现许多高效且低成本的自动化应用效果,这是一款值得拥有和分享的工具。

以上就是Python+SeaTable实现生成条形码图片并写入表格的详细内容,更多关于Python SeaTable条形码的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表