当前位置: 首页 > 后端技术 > Python

Python+海表-将数字和文本列生成条码图片并写入表格

时间:2023-03-26 15:40:41 Python

无论是录入信息时需要用扫码器扫码,还是查资料时用扫码器扫码,或者有其他需要生成条码,那么如何实现呢?我们从表格中的数字和文本列快速生成条形码图像?在SeaTable表中使用Python脚本可以轻松实现,即将表中的某个字段,如身份证号、手机号等,转换成对应的条码,存入image栏。例如,您有下表,其中包含电话号码和条形码图像两列。您需要将每一行的电话号码转换成条形码,并将其传输到条形码图像(BarcodeImage)列。如何实现?使用Python在SeaTable中生成条码要新建Python脚本,首先需要点击表格中的“脚本”功能,新建Python脚本。编写代码然后在脚本中写入如下代码(如果需要离线运行,需要安装python-barcode依赖包)"859ad340d9a2b11b067c11f43078992e148url=afcontext.server_urlor"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()defget_time_stamp():returnstr(int(time.time()*100000))forrowinbase.list_rows(TABLE_NAME):#如果image栏有内容,则跳过ifrow.get(BARCODE_IMAGE_COL):continue#如果电话号码栏为空,则跳过ifnotrow.get(TEXT_COL):continuetry: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)#上传图片到Basetableinfo_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)exceptExceptionaserror:print("errorcodegenerate时发生",error)continue运行脚本,一键点击运行按钮。脚本运行后,会自动为表格中的电话号码生成对应的条码,并保存在条码图片栏中,方便快捷。设置条码参考此外,如果需要设置条码的长度、条纹、文字等,可以在脚本中调整CUSTOM_OPTIONS中的参数。下面是一些例子:Defaultmodemodule_width1mmmodule_height5mmquiet_zone0.5mmfont_size6pttext_distance2应用在前面的场景中,文本列的值被转换成条形码。例如,一长串门票编号被转换成条形码图像。让我们看看如何应用它。打印用于粘贴答题卡的条码。将每个学生的准考证号转换成条码图片后,考官可以点击条码图片栏目全部下载,并使用{栏目名称}引用字段自动命名所有条码。方便后续工作。设计准考证页面识别信息将学生姓名、照片、准考证条码等信息设计到准考证页面,用于扫码阅读、查看、录入信息。是比较常见的测试管理工作和使用场景。这类数据的记录、处理和应用都可以在SeaTable表上快速完成。通过在表单中??添加页面设计插件,您可以自定义设计多个页面模板。页面可以拖入行记录中的文本、数字、图片等字段信息。设计保存后,可一键打印当前行记录页或打印所有页,也可使用{字段名}设置引用字段内容,一键下载为PDF。小结通过上面的例子,大家有没有发现SeaTable在使用上有更多的灵活性和场景,但是在条码的生成和转换中还有一个问题需要注意。一维条码本质上是不支持汉字转换的,只支持基本的数字、字母和部分字符的转换,但这对于日常业务来说基本够用了。总之,基于SeaTable丰富的功能,结合Python脚本的使用,可以帮助我们实现很多意想不到的效果,高效低成本的应用,真是一款值得拥有和分享的宝软件工具。案例参考Python+SeaTable|计算两天之间的工作天数Python+SeaTable|从启信宝网站获取公司融资等信息到SeaTable表Python+SeaTable|使用Python从维基百科抓取冬奥城市信息并制作地图