Python+SeaTable實現(xiàn)生成條形碼圖片并寫入表格
不管是錄入信息時需要用掃碼器掃碼錄入、核對信息時用于掃碼識別,還是有別的生成條形碼的需要,那我們如何把表格中的數(shù)字、文本列快速生成條形碼圖片呢?這在 SeaTable 表格中用 Python 腳本就可以輕松實現(xiàn),即把表格中的某一個字段,如身份證號、電話號轉換成相應的條形碼,并存儲到圖片列中。例如,你有如下一張表格,里面有電話號碼和條碼圖片兩列,需要把每一行的電話號碼轉換成條碼,并傳到條碼圖片(BarcodeImage)列中去。怎么實現(xiàn)呢?
在 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
運行腳本
一鍵點擊運行按鈕,腳本運行完成后,表格中的電話號就會自動生成相應的條形碼,并保存到條形碼圖片列。方便快捷。
設置條碼參考
此外,如果你還需要設置條碼、條紋的長度,以及文本的長度等,可以通過調節(jié)腳本中的 CUSTOM_OPTIONS中的參數(shù)來實現(xiàn),以下是一些例子:
默認模式
module_width 1mm
module_height 5mm
quiet_zone 0.5mm
font_size 6pt
text_distance 2
應用場景
在前面完成了把文本列的值轉換成條形碼,例如,把一長串準考證號轉換成條形碼圖片,下面來看如何應用。
打印條形碼用于粘貼答題卡
當把每個學生的準考證號轉換成條形碼圖片后,考務工作人員點擊條形碼圖片列,可以下載全部并能使用 {列名} 引用字段內容給所有條形碼自動命名,方便后續(xù)工作。
設計準考證頁面用于識別信息
把學生姓名、照片、準考證條形碼等信息設計成準考證頁面,用于掃碼讀取、核對、錄入信息等需要,是比較常見的考務工作和使用場景。這種數(shù)據(jù)的記錄、處理、應用等工作在 SeaTable 表格上就可以快速完成。
在表格上添加頁面設計插件,就可以自定義設計多個頁面模板。頁面可以拖入行記錄中的文本、數(shù)字、圖片等字段信息。設計完并保存后,可以一鍵打印當前行記錄頁面或打印所有頁面,也可以設置使用 {字段名} 引用字段的內容,并一鍵下載為PDF。
總結
通過以上的例子,是不是又發(fā)現(xiàn)了 SeaTable 在使用上的更多靈活性和場景呢,但是條碼的生成和轉換還需要注意一個問題,一維條碼天生是不支持漢字轉換的,只支持基本的數(shù)字、字母和一些字符的轉換,不過這對于日常業(yè)務已經(jīng)基本足夠了??傊?,基于 SeaTable 豐富的功能,再結合 Python 腳本來使用,能幫助我們實現(xiàn)很多意想不到的效果,高效率低成本落地應用,真的是一款值得擁有和分享的寶藏軟件工具。
以上就是Python+SeaTable實現(xiàn)生成條形碼圖片并寫入表格的詳細內容,更多關于Python SeaTable條形碼的資料請關注腳本之家其它相關文章!
相關文章
Pandas中Concat與Append的實現(xiàn)與區(qū)別小結
本文主要介紹了Pandas中Concat與Append的實現(xiàn)與區(qū)別小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-11-11為何你的Python代碼在Notepad++中只閃現(xiàn)一下就消失無蹤?
你是否曾在Notepad++中運行編寫的Python代碼,卻發(fā)現(xiàn)它們瞬間消失無蹤?別擔心,這不是你的幻覺,在這篇指南中,我們將揭秘這一現(xiàn)象背后的原因,并教你如何輕松解決,讓我們一起揭開這個謎團,讓你的Python代碼在Notepad++中安然無恙吧!2024-02-02python學習之使用Matplotlib畫實時的動態(tài)折線圖的示例代碼
這篇文章主要介紹了python學習之使用Matplotlib畫實時的動態(tài)折線圖的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02