共计 2516 个字符,预计需要花费 7 分钟才能阅读完成。
不论是录入信息时须要用扫码器扫码录入、核查信息时用于扫码辨认,还是有别的生成条形码的须要,那咱们如何把表格中的数字、文本列疾速生成条形码图片呢?这在 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 | 从启信宝网站获取公司融资等信息至 SeaTable 表格
Python + SeaTable | 用 Python 从维基百科抓取冬奥会城市信息并制作地图