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

 更新时间:2022年07月29日 08:21:37   作者:SeaTable开发者版  
不管是录入信息时需要用扫码器扫码录入,还是有别的生成条形码的需要,这在 SeaTable 表格中用 Python 脚本就可以轻松实现,本文就来为大家详细讲解一下

不管是录入信息时需要用扫码器扫码录入、核对信息时用于扫码识别,还是有别的生成条形码的需要,那我们如何把表格中的数字、文本列快速生成条形码图片呢?这在 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条形码的资料请关注脚本之家其它相关文章!

相关文章

  • 详解pandas.DataFrame中删除包涵特定字符串所在的行

    详解pandas.DataFrame中删除包涵特定字符串所在的行

    这篇文章主要介绍了pandas.DataFrame中删除包涵特定字符串所在的行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python中缓存lru_cache的基本介绍和讲解

    Python中缓存lru_cache的基本介绍和讲解

    缓存是一种将定量数据加以保存以备迎合后续请求的处理方式,旨在加快数据的检索速度,下面这篇文章主要给大家介绍了关于Python中缓存lru_cache的基本介绍和讲解的相关资料,需要的朋友可以参考下
    2022-01-01
  • Windows系统下多版本pip的共存问题详解

    Windows系统下多版本pip的共存问题详解

    这篇文章主要给大家介绍了关于在Windows系统下多版本pip的共存问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-10-10
  • python-httpx的使用及说明

    python-httpx的使用及说明

    这篇文章主要介绍了python-httpx的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • python字典多条件排序方法实例

    python字典多条件排序方法实例

    这篇文章主要介绍了python字典多条件排序方法实例,分别使用lambda和itemgetter实现,需要的朋友可以参考下
    2014-06-06
  • 在python中画正态分布图像的实例

    在python中画正态分布图像的实例

    今天小编就为大家分享一篇在python中画正态分布图像的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • pandas数据合并与重塑之merge详解

    pandas数据合并与重塑之merge详解

    这篇文章主要介绍了pandas数据合并与重塑之merge,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 分析经典Python开发工程师面试题

    分析经典Python开发工程师面试题

    在本篇内容中小编给大家分享了一篇关于Python开发工程师面试题的相关总结内容,需要的朋友们学习下。
    2019-04-04
  • python调用jenkinsAPI构建jenkins,并传递参数的示例

    python调用jenkinsAPI构建jenkins,并传递参数的示例

    这篇文章主要介绍了python调用jenkinsAPI构建jenkins,并传递参数的示例,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-12-12
  • 用Python逐行分析文件方法

    用Python逐行分析文件方法

    在本篇文章里我们给大家分享了关于用Python逐行分析文件方法知识点,有需要的朋友们跟着学习下。
    2019-01-01

最新评论