Python利用python-docx實現(xiàn)自動生成Word文檔
?引言
在數(shù)字化辦公場景中,Word 文檔自動化生成能顯著提升工作效率。本文通過實戰(zhàn)案例,系統(tǒng)講解如何利用 python-docx 庫實現(xiàn)從基礎文檔創(chuàng)建到復雜格式控制的完整流程,涵蓋標題、段落、表格、圖片等核心元素的自動化處理技巧。
一、環(huán)境準備與基礎操作
1.1 庫安裝與導入
pip install python-docx
from docx import Document from docx.shared import Pt, Inches from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
1.2 創(chuàng)建空白文檔
doc = Document()
二、核心元素操作實戰(zhàn)
2.1 標題與段落處理
多級標題創(chuàng)建:
doc.add_heading('一級標題', level=1) doc.add_heading('二級標題', level=2)
格式化段落:
p = doc.add_paragraph('設置格式的段落') run = p.runs[0] run.bold = True run.font.size = Pt(14) p.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
2.2 表格自動化生成
動態(tài)表格創(chuàng)建:
table = doc.add_table(rows=1, cols=3) table.style = 'Table Grid' hdr_cells = table.rows[0].cells hdr_cells[0].text = '姓名' hdr_cells[1].text = '部門' hdr_cells[2].text = '工資' data = [("張三", "財務部", "8000"), ("李四", "人事部", "7500")] for item in data: row_cells = table.add_row().cells row_cells[0].text = item[0] row_cells[1].text = item[1] row_cells[2].text = item[2]
2.3 圖片插入與控制
精準尺寸控制:
doc.add_picture('logo.png', width=Inches(2.0))
三、高級格式控制技巧
3.1 段落格式深度定制
縮進與間距設置:
p.paragraph_format.left_indent = Inches(0.5) p.paragraph_format.right_indent = Pt(24) p.paragraph_format.space_after = Pt(12)
制表位應用:
tab_stops = p.paragraph_format.tab_stops tab_stop = tab_stops.add_tab_stop(Inches(1.5), WD_TAB_ALIGNMENT.RIGHT, WD_TAB_LEADER.DOTS)
3.2 字符級樣式控制
字體效果組合:
run = p.add_run('高級格式示例') run.font.name = '微軟雅黑' run.font.size = Pt(16) run.font.color.rgb = RGBColor(0x00, 0x66, 0xcc) run.font.underline = WD_UNDERLINE.DOUBLE
四、實戰(zhàn)場景解析
4.1 模板填充自動化
合同文檔生成:
def fill_template(template_path, output_path, context): doc = Document(template_path) for para in doc.paragraphs: for key, val in context.items(): if f'{{{{{key}}}}}' in para.text: para.text = para.text.replace(f'{{{{{key}}}}}', str(val)) doc.save(output_path) context = { "contract_no": "HT2024060101", "party_a": "上??萍加邢薰?, "amount": 35000 } fill_template("contract_template.docx", "output.docx", context)
4.2 批量文檔生成
Excel驅(qū)動生成:
import pandas as pd df = pd.read_excel('employees.xlsx') for index, row in df.iterrows(): doc = Document() doc.add_heading(f'員工檔案-{row["編號"]}', level=1) doc.add_paragraph(f'姓名:{row["姓名"]}') doc.add_paragraph(f'部門:{row["部門"]}') doc.save(f'archives/{row["編號"]}.docx')
五、性能優(yōu)化與最佳實踐
5.1 樣式復用策略
全局樣式定義:
styles = doc.styles title_style = styles.add_style('CustomTitle', WD_STYLE_TYPE.PARAGRAPH) title_font = title_style.font title_font.name = '微軟雅黑' title_font.size = Pt(22)
5.2 內(nèi)存優(yōu)化技巧
流式處理大文檔:
doc = Document() for i in range(1000): doc.add_paragraph(f'第{i}條記錄') if i % 50 == 0: doc.add_page_break()
六、常見問題解決方案
中文字體顯示問題
from docx.oxml.ns import qn run._element.rPr.rFonts.set(qn('w:eastAsia'), '宋體')
表格自動調(diào)整
table.autofit = False table.columns[0].width = Inches(1.5)
結(jié)語
通過系統(tǒng)掌握python-docx的層級結(jié)構(gòu)控制和樣式管理,可實現(xiàn)從簡單報告到復雜模板的自動化生成。實際應用中需注意文檔結(jié)構(gòu)規(guī)劃、樣式預定義和異常處理機制,這些實踐能顯著提升自動化文檔的可靠性和可維護性。
?到此這篇關(guān)于Python利用python-docx實現(xiàn)自動生成Word文檔的文章就介紹到這了,更多相關(guān)Python python-docx生成Word內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Python的pymouse click 雙擊的問題
這篇文章主要介紹了關(guān)于Python的pymouse click 雙擊的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06django rest framework使用django-filter用法
這篇文章主要介紹了django rest framework使用django-filter用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07使用python讀寫txt和json(jsonl)大文件的方法步驟
在Python中讀取txt和json(jsonl)大文件并保存到字典是一項非常常見的操作,這篇文章主要給大家介紹了關(guān)于使用python讀寫txt和json(jsonl)大文件的方法步驟,需要的朋友可以參考下2023-12-12