【Python】Python-docx使用實例 科技檔案封面批量生成

使用背景

根據excel表中的信息,按照word模板格式,每條信息生成一個對應的模板及文件名。

我這里的情況是將科技檔案的封面格式按照案卷表的明細批量生成。

(單位的檔案軟件太雞肋了,沒有這個功能)

代碼整篇

'''
工程檔案封面制作
原理:通過讀取案卷目錄生成對應word
python-docx說明文件地址
https://python-docx.readthedocs.io/en/latest/index.html
'''
import openpyxl
from docx import Document
from docx.shared import Ptdef WriteNewDoc(a,b,c,d,e,dir):'''寫入科技檔案封面'''doc= Document('/data/home/2024/99檔案/科技檔案封面模板.docx')para = doc.paragraphs#填寫檔號text_run1 = para[0].add_run(a)text_run1.underline = Truetext_run1.font.size = Pt(22)text_run1.font.name = '黑體'#填寫立卷單位text_run2 = para[-4].add_run(b.center(14))text_run2.underline = Truetext_run2.font.size = Pt(22)text_run2.font.name = '黑體'#填寫起止日期text_run3 = para[-3].add_run(c.center(27))text_run3.underline = Truetext_run3.font.size = Pt(22)text_run3.font.name = '黑體'#填寫保管期限text_run4 = para[-2].add_run(d.center(26))text_run4.underline = Truetext_run4.font.size = Pt(22)text_run4.font.name = '黑體'#填寫密級if e is None:text_run5 = para[-1].add_run("                            ")else:text_run5 = para[-1].add_run(e.center(28))text_run5.underline = Truetext_run5.font.size = Pt(22)text_run5.font.name = '黑體'title = dir+a+'.docx'doc.save(title)returnwb = openpyxl.load_workbook('/data/home/2024/99檔案/2023工程案卷.xlsx')
ws = wb.active
#3和14是我要使用的表格信息的行號區間首尾,一行信息生成一個文件
for row in range(3,14):#讀取檔號data1 = ws.cell(row,4).value#讀取立卷單位data2 = ws.cell(row,2).value#讀取起止日期data3 = ws.cell(row,7).value#讀取保管期限data4 = ws.cell(row,8).value#讀取密級data5 = ws.cell(row, 13).valueWriteNewDoc(data1,data2,data3,data4,data5,'/data/home/2024/99檔案/')
wb.close()

要點

  1. python-docx的對象架構,是document里含paragraphs,一個paragraph里含runs,一個run里含font,一個font可以調整字體的那些屬性,當然,每一級都有自己的具體屬性可以調整,比如段落可以調整居左/居右/居中,run里可以調整加粗、傾斜、下劃線之類,font可以調整字體、大小之類。沒有用到表格和超鏈接,沒細看這兩個對象的說明。
  2. document.save()里有名字的話,與模板不一樣就是另存為了。
  3. Pt(22)對應中文二號字體,即22磅。
  4. string.center(num)中num的數值不一致,是因為我沒找到中文字符的空格,一個中文字符的寬度等于兩個空格,又不知道如何限制文本顯示出的總長度,所以笨辦法只能數,好在要不全是中文字符,要不全是數字,寫好的長度都適用。密級那欄對應信息經常為空,所以加了判斷。

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

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

相關文章

【Linux】常見指令(下)

【Linux】常見指令(下) 通配符 *man指令cp指令echo指令cat指令(簡單介紹)cp指令 mv指令alias指令which ctrl ccat指令linux下一切皆文件 more指令less指令head指令tail指令管道 通配符 ‘*’ 通配符’ *‘,是可以匹配…

4 C 語言控制流與循環結構的深入解讀

目錄 1 復雜表達式的計算過程 2 if-else語句 2.1 基本結構及示例 2.2 if-else if 多分支 2.3 嵌套 if-else 2.4 懸空的 else 2.5 注意事項 2.5.1 if 后面不要加分號 2.5.2 省略 else 2.5.3 省略 {} 2.5.4 注意點 3 while 循環 3.1 一般形式 3.2 流程特點 3.3 注…

Dynamic多數據源

有時候我們在項目中,可能會遇到需要同時使用多個數據庫連接的情況,這個時候可以使用MyBatis-Plus的dynamic多數據源的配置。但其實MyBatis-Plus官方還提供了mybatis-mate組件,但是他是付費的企業組件。 官方文檔: 多數據源支持 …

識別視頻中的人數并統計出來

目的: 使用Python和pysimpleguil以及opencv寫一個統計人流量的軟件。要求:1 加載選定的視頻 2 通過形態學特征識別人,3統計人數并且在界面上顯示出來,4 保存識別出人數的信息。 步驟 1: 安裝必要的庫 首先,確保你已經安裝了Python。然后,安裝PySimpleGUI和OpenCV。你可…

數電基礎 - 可編程邏輯器件

目錄 ?編輯 一. 簡介 二. 現場可編程邏輯陣列 三. 可編程陣列邏輯 四. 通用陣列邏輯 五. 可擦除的可編程邏輯器件 六. 復雜的可編程邏輯器件 七. 現場可編程門陣列 一. 簡介 可編程邏輯器件(Programmable Logic Device,PLD)是一種用…

Gmsh用戶界面

主要指出幾何、網格、求解三個模塊. 幾何模塊分為基本實體和物理組兩個部分,主要對幾何體進行操作,并設置物理屬性 網格模塊主要定義了對網格的操作和對應的算法 求解主要指出了網格求解方法 所有的界面操作都是基于這三個方法的

半導體仿真文件傳輸面臨時間和經濟成本挑戰,一招就能解決

對于芯片設計企業來說,其面臨的最大考驗就是芯片設計質量和時間成本控制之間的矛盾,具體表現在芯片的設計、仿真驗證過程存在著較大的挑戰: 芯片設計過程包括了仿真驗證這一重要的一環,但芯片設計企業在仿真驗證這一環卻面臨著較…

數據結構--二叉樹遍歷

目錄 1.介紹 (1)前序遍歷 (2)定義結構體 (3)前序遍歷實現 (4)中序遍歷實現 (5)二叉樹的節點個數 (6)二叉樹樹葉節點個數 &…

數倉工具—Hive語法之宏(Macro)

Hive中的宏 許多關系型數據庫,如Teradata,支持宏(Macro)函數。在關系數據庫管理系統(RDBMS)中,宏存儲在數據字典中。用戶可以共享宏,并根據需要執行它們。Hive宏與關系型數據庫中的宏略有不同。在本文中,我們將檢查什么是宏,它的語法,如何使用它們,以及一些宏的示…

java 字段 大于4000拆分

java 字段 大于4000拆分 public List<String> splitJsonIfNecessary(String jsonStr) {List<String> result new ArrayList<>();while (jsonStr.length() > Constant.MAX_LENGTH) {// 直接按字符數截取&#xff0c;不考慮JSON結構String part jsonStr.s…

東軟醫療 踩在中國醫療科技躍遷的風口上

恐怕沒有哪一家本土醫療裝備企業能像東軟醫療一樣&#xff0c;每一段成長的升維都發生在中國醫療科技躍遷史最重要的節點上。 在工業制造領域&#xff0c;醫療裝備產業由于涉及數十個學科領域&#xff0c;其技術復合程度毫不遜于今天公眾所熟知的EUV光刻機&#xff0c;是一門技…

【TES807】 基于XCKU115 FPGA的雙FMC接口萬兆光纖傳輸信號處理平臺

板卡概述 TES807是一款基于千兆或者萬兆以太網傳輸的雙FMC接口信號處理平臺。該平臺采用XILINX的Kintex UltraSacle系列FPGA&#xff1a;XCKU115-2FLVF1924I作為主處理器&#xff0c;FPGA外掛兩組72位DDR4 SDRAM&#xff0c;用來實現超大容量數據緩存&#xff0c;DDR4的最高數據…

08-8.5.1 歸并排序

&#x1f44b; Hi, I’m Beast Cheng &#x1f440; I’m interested in photography, hiking, landscape… &#x1f331; I’m currently learning python, javascript, kotlin… &#x1f4eb; How to reach me --> 458290771qq.com 喜歡《數據結構》部分筆記的小伙伴可以…

Linux容器時間隔離性測試

在宿主機和容器內同時執行date命令獲取時間 date可以看到宿主機和容器內的時間一致 在宿主機修改時間 date -s "2022-01-01 12:00:00"在宿主機和容器內同時執行date命令獲取時間 date 可以看到時間都修改為了2022年 在宿主機執行命令將時間修改回去 sudo date -s &qu…

《云原生安全攻防》-- 容器攻擊案例:Docker容器逃逸

當攻擊者獲得一個容器環境的shell權限時&#xff0c;攻擊者往往會嘗試進行容器逃逸&#xff0c;利用容器環境中的錯誤配置或是漏洞問題&#xff0c;從容器成功逃逸到宿主機&#xff0c;從而獲取到更高的訪問權限。 在本節課程中&#xff0c;我們將詳細介紹一些常見的容器逃逸方…

摸魚大數據——Kafka——kafka tools工具使用

可以在可視化的工具通過點擊來操作kafka完成主題的創建&#xff0c;分區等操作 注意: 安裝完后桌面不會有快捷方式,需要去電腦上搜索,或者去自己選的安裝位置找到發送快捷方式到桌面! 連接配置 創建主題 刪除主題 主題下的數據查看 數據顯示問題說明 修改工具的數據顯示類型 發…

設計模式使用場景實現示例及優缺點(行為型模式——命令模式)

從前&#xff0c;在一個美麗而神秘的王國里&#xff0c;住著一位智慧而仁慈的國王。他不僅以其公正和睿智著稱&#xff0c;還因為他對知識的熱愛和追求。他的王國繁榮昌盛&#xff0c;人們生活幸福安康。但即便如此&#xff0c;國王知道&#xff0c;要維持這種繁榮與和平&#…

編程參考 - Rule of Three and the Rule of Five in C++

C 中的 "三規則 "和 "五規則 "是管理類中資源管理函數&#xff08;特殊成員函數&#xff09;的準則。這些規則有助于確保類正確一致地管理動態內存、文件句柄或網絡連接等資源。 The Rule of Three and the Rule of Five in C are guidelines for managing…

【C++題解】1168. 歌唱比賽評分

問題&#xff1a;1168. 歌唱比賽評分 類型&#xff1a;數組找數 題目描述&#xff1a; 四&#xff08;1&#xff09; 班要舉行一次歌唱比賽&#xff0c;以選拔更好的苗子參加校的歌唱比賽。評分辦法如下&#xff1a;設 N 個評委&#xff0c;打 N 個分數&#xff08; 0≤每個分…

Linux C語言基礎 day10

目錄 學習目標&#xff1a; 學習內容&#xff1a; 1.指針指向數組 1.1 指針與數組的關系 1.2 指針與一維數組關系實現 1.2.1 指針與一維數組的關系 1.2.2 指針指向一維整型數組作為函數參數傳遞 課外作業&#xff1a; 學習目標&#xff1a; 一周掌握 C基礎知識 學習內…