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

作者:SeaTable开发者版 时间:2022-09-04 22:13:26 

不管是录入信息时需要用扫码器扫码录入、核对信息时用于扫码识别,还是有别的生成条形码的需要,那我们如何把表格中的数字、文本列快速生成条形码图片呢?这在 SeaTable 表格中用 Python 脚本就可以轻松实现,即把表格中的某一个字段,如身份证号、电话号转换成相应的条形码,并存储到图片列中。例如,你有如下一张表格,里面有电话号码和条码图片两列,需要把每一行的电话号码转换成条码,并传到条码图片(BarcodeImage)列中去。怎么实现呢?

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

在 SeaTable 中用 Python 生成条形码

新建 Python 脚本

首先需要在表格中,点击“脚本”功能,新建一个 Python 脚本。

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

写入代码

然后在脚本中写入如下代码(如果需要线下运行,需要安装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

运行脚本

一键点击运行按钮,脚本运行完成后,表格中的电话号就会自动生成相应的条形码,并保存到条形码图片列。方便快捷。

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

设置条码参考

此外,如果你还需要设置条码、条纹的长度,以及文本的长度等,可以通过调节脚本中的 CUSTOM_OPTIONS中的参数来实现,以下是一些例子:

默认模式

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

module_width 1mm

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

module_height 5mm

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

quiet_zone 0.5mm

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

font_size 6pt

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

text_distance 2

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

应用场景

在前面完成了把文本列的值转换成条形码,例如,把一长串准考证号转换成条形码图片,下面来看如何应用。

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

当把每个学生的准考证号转换成条形码图片后,考务工作人员点击条形码图片列,可以下载全部并能使用 {列名} 引用字段内容给所有条形码自动命名,方便后续工作。

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

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

把学生姓名、照片、准考证条形码等信息设计成准考证页面,用于扫码读取、核对、录入信息等需要,是比较常见的考务工作和使用场景。这种数据的记录、处理、应用等工作在 SeaTable 表格上就可以快速完成。

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

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

来源:https://juejin.cn/post/7125331420850946055

标签:Python,SeaTable,条形码
0
投稿

猜你喜欢

  • sql模式设置引起的问题解决办法

    2024-01-17 03:38:16
  • pygame实现弹球游戏

    2023-05-26 20:38:44
  • python循环神经网络RNN函数tf.nn.dynamic_rnn使用

    2022-08-28 15:42:24
  • 下载文件个别浏览器文件名乱码解决办法

    2024-04-17 10:05:04
  • python自动安装pip

    2021-04-06 09:30:00
  • 一个用JavaScript写的本周是本学期第几周的程序

    2009-03-09 12:49:00
  • python笔记之使用fillna()填充缺失值

    2023-12-22 19:53:49
  • PHP图片库imagemagick安装方法

    2023-11-16 18:54:38
  • Python列表推导式实现代码实例

    2023-02-07 21:35:05
  • 在django中,关于session的通用设置方法

    2023-09-26 09:53:52
  • MySql用DATE_FORMAT截取DateTime字段的日期值

    2024-01-14 02:48:22
  • 微信小程序封装多张图片上传api代码实例

    2024-04-25 13:13:31
  • 一篇文章带你入门python之推导式

    2022-02-05 08:29:35
  • python自动发邮件库yagmail的示例代码

    2022-01-15 14:23:26
  • Python如何实现SSH远程连接与文件传输

    2023-06-12 12:34:02
  • vue2.0 循环遍历加载不同图片的方法

    2024-05-08 10:24:50
  • 适合后台管理系统开发的12个前端框架(小结)

    2023-08-29 02:11:14
  • css样式表滤镜全接触

    2007-10-26 12:48:00
  • k-means 聚类算法与Python实现代码

    2022-02-01 02:55:22
  • Python中使用copy模块实现列表(list)拷贝

    2022-05-13 02:46:48
  • asp之家 网络编程 m.aspxhome.com