【Python】Excel表格操作:ISBN轉條形碼

一、效果

原始文件:

輸出文件:

二、代碼

import os
import logging
from openpyxl import load_workbook
from openpyxl.drawing.image import Image as ExcelImage
from barcode import EAN13
from barcode.writer import ImageWriterlogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')def delete_files(directory):file_list = os.listdir(directory)for file in file_list:file_path = os.path.join(directory, file)if os.path.isfile(file_path):os.remove(file_path)def generate_barcode_image_with_text(barcode_str, output_path_without_ext):# Generate barcode image without textean = EAN13(barcode_str, writer=ImageWriter())saved_path = ean.save(output_path_without_ext)return saved_pathdef insert_barcodes_to_excel(excel_file, ISBNCol, imgCol):logging.info("開始處理")if not os.path.exists('barcode_temp'):os.makedirs('barcode_temp')wb = load_workbook(excel_file)ws = wb.activelogging.info(f"加載工作表: {ws.title}")img_height_in_points = 45  # 你設置的圖片高度,單位是磅,1磅約等于1.33像素for row in range(2, ws.max_row + 1):barcode_cell = ws.cell(row=row, column=ISBNCol)barcode_str = str(barcode_cell.value).strip()if not barcode_str or len(barcode_str) != 13 or not barcode_str.isdigit():logging.warning(f"第{row}行條碼格式不正確,跳過: {barcode_str}")continueimg_path_no_ext = os.path.join('barcode_temp', f'barcode_{barcode_str}')try:img_path = generate_barcode_image_with_text(barcode_str, img_path_no_ext)except Exception as e:logging.error(f"生成條碼失敗,行{row},條碼{barcode_str},錯誤: {e}")continueimg_for_excel = ExcelImage(img_path)img_for_excel.width = 180img_for_excel.height = 60img_cell = f'{imgCol}{row}'# # 設置列寬ws.column_dimensions[imgCol].width = img_for_excel.width * 0.15# # 設置行高ws.row_dimensions[row].height = img_for_excel.heightws.add_image(img_for_excel, img_cell)# 調整當前行高,避免圖片重疊current_height = ws.row_dimensions[row].heightif current_height is None or current_height < img_height_in_points:ws.row_dimensions[row].height = img_height_in_points# logging.info(f"插入條碼圖片到 {img_cell} 并調整行高")new_file = os.path.splitext(excel_file)[0] + '_with_barcodes.xlsx'try:wb.save(new_file)logging.info(f"保存新文件: {new_file}")except PermissionError:logging.error(f"保存文件失敗,可能文件被打開: {new_file}")if os.path.exists('barcode_temp'):logging.info("刪除臨時文件")delete_files('barcode_temp')logging.info("完成處理!")if __name__ == "__main__":excel_path = 'D:\\temp\\圖書清單.xlsx'insert_barcodes_to_excel(excel_path, 1, "B")

三、說明

1、insert_barcodes_to_excel參數1:原始Excel表格文件絕對路徑。

2、insert_barcodes_to_excel參數2:ISBN所在列,數字格式。例如:ISBN在A列則輸入1,在B列則輸入2。

3、insert_barcodes_to_excel參數3:生成的條形碼需要放在第幾列,大寫字母格式。例如:需要放在第二列則輸入B,第三列則輸入C。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85619.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85619.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85619.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Fargo】mediasoup發送2:碼率分配、傳輸基類設計及WebRtcTransport原理

Fargo 使用了mediasoup的代碼,搬運了他的架構架構精妙,但是似乎是為了sfu而生,【Fargo】mediasoup發送1:控制與數據分離的分層設計和原理我本地用來發送測試,因此需要進一步梳理: 通過分析這段代碼,我來詳細解釋: 一、sfu 需要碼率級別的分配控制 1. DistributeAvail…

矩陣置零C++

給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 思路&#xff1a; 1、讓首行首列記錄哪一行哪一列有0 2、于是可以直接遍歷非首行首列的元素&#xff0c;若該元素對應的首行首列為0&#xff0c;說明…

大內存對電腦性能有哪些提升

在科技飛速發展的今天&#xff0c;電腦已經成為我們生活和工作中不可或缺的伙伴。無論是日常辦公、追劇娛樂&#xff0c;還是進行復雜的游戲和專業設計&#xff0c;電腦的性能都至關重要。而在影響電腦性能的眾多因素中&#xff0c;內存大小常常被人們忽視。 多任務處理更流暢…

【StarRocks系列】Update語句

目錄 簡要流程 詳細流程 1. UPDATE 語句執行流程 2. 如何更新表的數據 3. 是否支持事務 總結關鍵點 簡要流程 前端處理&#xff08;FE&#xff09;&#xff1a; 解析 SQL 并驗證主鍵條件生成包含主鍵列表和新值的更新計劃按主鍵哈希分發到對應 BE 后端執行&#xff08…

計算機三級Linux應用與開發

第 1 章 計算機體系結構與操作系統 1.1 計算科學與計算機系統 馮諾依曼體系的結構要點&#xff1a; 計算機數制采用二進制&#xff0c;程序指令和數據統一存儲&#xff0c;計算機應按照程序順序執行。按照馮諾依曼結構設計的計算機由 控制器&#xff0c;運算器&#xff0c;存…

Web攻防-XSS跨站Cookie盜取數據包提交網絡釣魚BEEF項目XSS平臺危害利用

知識點&#xff1a; 1、Web攻防-XSS跨站-手工代碼&框架工具&在線平臺 2、Web攻防-XSS跨站-Cookie盜取&數據提交&網絡釣魚 演示案例-WEB攻防-XSS跨站-Cookie盜取&數據提交&網絡釣魚&Beef工具 1、XSS跨站-攻擊利用-憑據盜取 條件&#xff1a;無防…

自力更生式養老VS三大新型養老:在時代裂變中重構銀發生存法則

在歲月長河中&#xff0c;父母曾為子女遮風擋雨&#xff0c;當他們步入暮年&#xff0c;養老問題成為家庭與社會共同關注的焦點。 “父母的養老終究是自力更生”&#xff0c;這句話道出了養老的本質內核。 然而&#xff0c;在自力更生的基礎上&#xff0c;選擇合適的養老方式…

計算機網絡學習筆記:Wireshark觀察TCP通信

文章目錄 前言一、前置準備二、三報文握手過程抓包2.1、第一次握手2.2、第二次握手2.3、第三次握手 三、通信過程抓包3.1、報文 44379 – 客戶端發數據&#xff08;PSH, ACK&#xff09;3.2、 報文 44380 – 服務端確認收到數據&#xff08;ACK&#xff09;3.3、報文 44469 – …

在Linux中,Iptables能做什么?

概述 背景說明 在運維工作中&#xff0c;Iptables是一個不可或缺的工具&#xff0c;它提供了強大的網絡流量控制和管理能力。 問題呈現 iptables是一個不可獲取的工具&#xff0c;你對其了解多少&#xff1f;該工具你是否真的會用&#xff1f;詳細功能對應的應用場景你是否…

Linux——linux的基本命令

目錄 一、linux的目錄結構 二、絕對路徑和相對路徑 三、文件類型&#xff08;linux下所有東西都可看作文件&#xff09; 四、文件的權限 五、文件權限的修改&#xff08;chmod&#xff09; 六、linux常用的命令 七、文件查看命令 八、文件編輯命令 九、文件壓縮與解壓…

智慧水利數字孿生解決方案:百川孿生智領千行,100+標桿案例賦能智慧水利全域升級

在數字技術革命與產業變革深度交織的浪潮下&#xff0c;智慧水利作為保障國家水安全、推動水利高質量發展的核心載體&#xff0c;正以數字孿生技術為引擎&#xff0c;驅動水利行業從“經驗驅動”向“數據驅動”轉型。 山東融谷作為智慧水利數字孿生領域的創新實踐者&#xff0c…

深入解析ID3算法:信息熵驅動的決策樹構建基石

本文來自「大千AI助手」技術實戰系列&#xff0c;專注用真話講技術&#xff0c;拒絕過度包裝。 ID3&#xff08;Iterative Dichotomiser 3&#xff09; 是機器學習史上的里程碑算法&#xff0c;由Ross Quinlan于1986年提出。它首次將信息論引入決策樹構建&#xff0c;奠定了現代…

Java解析audio時長

前提需要電腦上先安裝后ffmpeg public long parseDuration(String audioPath) {long durationMs -1;try {Process process Runtime.getRuntime().exec("ffprobe " audioPath);// InputStream is process.getInputStream();InputStream is process.getErrorStrea…

python學智能算法(十五)|機器學習樸素貝葉斯方法進階-CountVectorizer多文本處理

【1】引言 前序學習進程中&#xff0c;已經學習CountVectorizer文本處理的簡單技巧&#xff0c;先相關文章鏈接為&#xff1a; python學智能算法&#xff08;十四&#xff09;|機器學習樸素貝葉斯方法進階-CountVectorizer文本處理簡單測試-CSDN博客 此次繼續深入&#xff0…

AiPy 監控視頻智能監察:人像一鍵抽取+可反復執行程序落地

兄弟們&#xff0c;不知道你們有沒有過查監控的經歷&#xff0c;雖然現在監控攝像頭是越來越多&#xff0c;硬盤越塞越滿&#xff0c;但真出了事兒&#xff0c;回放查錄像堪比大海撈針&#xff01;純人工一幀幀的去找&#xff0c;能把眼睛盯瞎還是人影都找不到。不過我最近搞了…

期貨反向跟單-終止盤手合作原則(二)

在期貨反向跟單的領域中&#xff0c;數據就是實打實的真金白銀&#xff0c;是策略能否持續盈利的核心價值所在。然而&#xff0c;許多團隊在實際運營過程中&#xff0c;都遭遇了相似的困境&#xff1a;期初策略運轉良好&#xff0c;可隨著時間推移&#xff0c;數據表現卻每況愈…

【Unity】MiniGame編輯器小游戲(三)馬賽克【Mosaic】

更新日期&#xff1a;2025年6月17日。 項目源碼&#xff1a;后續章節發布 索引 馬賽克【Mosaic】一、游戲最終效果二、玩法簡介三、正式開始1.定義游戲窗口類2.規劃游戲窗口、視口區域3.地圖方塊陣列①.定義方塊結構體②.生成方塊陣列③.計算九宮格黑色方塊數量④.排除任意九宮…

基于深度學習的智能圖像質量評估系統:技術與實踐

前言 在數字圖像處理和計算機視覺領域&#xff0c;圖像質量評估&#xff08;Image Quality Assessment, IQA&#xff09;是一個重要的研究方向。圖像質量評估的目標是通過算法自動評估圖像的質量&#xff0c;包括清晰度、對比度、噪聲水平等。傳統的圖像質量評估方法主要依賴于…

【Golang面試題】Go語言實現請求頻率限制

Go語言實現請求頻率限制&#xff1a;從計數器到令牌桶的完整指南 在實際開發中&#xff0c;接口被惡意刷請求是常見問題。本文將深入探討Go語言中四種主流的請求限流方案&#xff0c;從簡單到復雜逐步深入&#xff0c;助你構建高可用服務。 一、基礎方案&#xff1a;計數器法…

11Labs 增長負責人分享:企業級市場將從消費級或開發者切入丨Voice Agent 學習筆記

本文摘自 Founder Park AI 產品如何做增長&#xff0c;ElevenLabs的案例很值得學習。 專注于 AI 語音生成的獨角獸企業 ElevenLabs 可以說一直在高速增長。在今年 1 月完成 1.8 億美元 C 輪融資后&#xff0c;ElevenLabs 的估值突破 30 億&#xff0c;直指 33 億美元。2024 年…