精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
生活中的python-利用python-docx自動生成表格簡化工作流程

背景

因為工作原因,需要經常往兩個word模板里填寫內容并生成新的word文件,模板大致如下圖:

老的工作流程:

打開兩個表,在表中對應位置填寫個人信息,保存。這樣一來,當需要填寫的信息比較多的時候,工作就會繁瑣。

新的工作流程:

利用python-docx編寫腳本,運行腳本-輸入個人信息-自動生成兩個word模板

腳本用到的python-docx庫的功能:

1、創建與合并表格2、添加文本3、設置文本屬性(如大小、加粗、下劃線、居中等)

安裝python-docx:

pip install python_docx
創建與合并表格

在python-docx中有表格對象(Table)。我們可以把一個表格看成M行(Row)N列(Column)的矩陣。

表格中的一個“格子”就是一個cell對象,同時它還有rows(行)和columns(列)屬性

首先創建一個新的文檔

from docx import Documentdocument = Document()

然后用Document類的add_table方法增加一個表格,其中rows是行,cols是列,style表格樣式,具體可以查看官方文檔:

table = document.add_table(rows=37,cols=13,style='Table Grid')

上述代碼就在word里插入了一個37行、13列的表格。(有37*13=481個cell)

生成的每個cell都是有“坐標”的,比如上面的表格左上角cell為(0,0),右下角cell為(36,12)

下面要做的就是合并一些cell,從而達到我們最終需要的表格

table.cell(0,0).merge(table.cell(2,2))

上述代碼就將cell(0,0)到cell(2,2)之間的所有cell合并成一個cell

這里需要注意的是,雖然每個cell都合并了,但其實它還是存在的。比如合并了(0,0)和(0,1)兩個cell,那么這個合并的cell其實就是(0,0;0,1)

如果cell較多,無法直觀的看出坐標的話,可以用下列的代碼將每個cell的坐標都標注出來,方便合并

document = Document()table = document.add_table(rows=37,cols=13,style='Table Grid')document.save('table-1.docx')document1 = Document('table-1.docx')table = document1.tables[0]for row,obj_row in enumerate(table.rows):   for col,cell in enumerate(obj_row.cells):       cell.text = cell.text + "%d,%d " % (row,col)document1.save('table-2.docx')
添加文本

將所有cell依次合并后,就需要向合并后的cell里添加文本。

用table的row方法可以得到一個表格的一行list其中包含了這一行的所有cell

hdr_cells0 = table.rows[0].cells

上面代碼就得到了合并表格后的第一行所有cell,然后我們用hdr_cell0[0]就可以得到合并表格后的第一行的第一個cell。用add_paragraph方法即可像cell里添加文本

hdr_cells0[0].add_paragraph('院(系)\n')

上面已經說過,合并的cell其實還是存在的。因為我所需要的表格第一個cell實際合并了(0,0)---(2,2)之間六個cell。所以hdr_cell0[0].add_paragraph其實就是向這六個cell里寫入內容。

第二個cell合并的是(0,3)---(2,6)之間的cell。所以就應該向(0,3)寫入文本,其實向這之間任一一個cell寫入文本都是可以的,所以應該是

hdr_cells0[3].add_paragraph('院')

按照上面的方法依次類推,就可以將所需表格的整體部分做成。

設置文本屬性(如大小、加粗、下劃線、居中等)

合并表格并且添加了所需文本后,下面就需要設置表格內文本的各種屬性了,比如大小、加粗、下劃線、居中等

在python-docx中,word主要有兩種文本格式等級:塊等級(block-level)和內聯等級(inline-level)。word中大部分內容都是由這兩種等級的對象組成。

段落是word文件中主要的塊對象,圖片、表、標題、列表也是塊對象

內聯對象是塊對象的組成部分塊對象的所有內容都包含在內聯對象中,一個塊對象由一個或多個內聯對象組成

run 是常用的內聯對象,例如:

       p = document.add_paragraph('This is paragraph')       p.add_run('bold').bold = True       p.add_run(' and some ').font.size = Pt(14)       p.add_run('italic.').italic = True

這個例子中一個段落(塊對象)包含三個 run(內聯對象),每一個 run 依次設置了粗體、大小、斜體三種屬性

具體設置run屬性直接用代碼說明,更詳細的請直接查閱官方文檔

from docx import Documentfrom docx.shared import Inches, Ptfrom docx.enum.text import WD_ALIGN_PARAGRAPHdocument = Document()#設置整個文檔的默認字體document.styles['Normal'].font.name = u'宋體'document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體')p1=document.add_paragraph()#設置p1段落居中p1.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER#p1段落大小p1.paragraph_format.line_spacing = Pt(25) #給p1段落添加run對象r1,并設置文本r1 =p1.add_run('添加文本\r添加文本\n')#文字大小r1.font.size = Pt(16)#粗體r1.bold = True#下劃線r1.font.underline = True

源代碼已上傳至:
https://github.com/juventusryp/python-in-life

參考鏈接:

1.用 python 來操作 docx, xlsx 格式文件(二)(使用 docx 庫操作 docx 格式文件)

2.使用表格—— 使用Python讀寫Office文檔之三

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python操作docx文檔設置居中并創建表格
使用python-docx模塊讀寫word文件
Python操縱Word神器
用Python讀寫word文檔
Word 神器 python-docx
python_docx制作word文檔的使用說明
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 呼图壁县| 克什克腾旗| 福安市| 潜山县| 安多县| 佛教| 栾川县| 保定市| 邵东县| 龙陵县| 临澧县| 禄劝| 香河县| 方城县| 兰考县| 尚志市| 吉首市| 翁源县| 商河县| 自治县| 南江县| 资中县| 邵阳县| 斗六市| 桂平市| 大名县| 突泉县| 昌吉市| 陇川县| 习水县| 广宗县| 兴文县| 新竹市| 浪卡子县| 永年县| 南皮县| 广河县| 湾仔区| 瑞安市| 霍邱县| 江西省|