最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現Word文檔自動化排版的完整流程

 更新時間:2026年01月09日 09:04:38   作者:愛吃提升  
這篇文章主要為大家詳細介紹了Python實現Word文檔自動化排版的完整流程,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以了解下

一、核心工具準備

Python處理Word自動化排版的核心庫是python-docx,先完成環(huán)境安裝:

# 安裝python-docx庫(僅支持.docx格式,不支持老舊.doc格式)
pip install python-docx

python-docx的核心能力:

  • 控制字體、字號、顏色、加粗/斜體等字符樣式;
  • 調整段落間距、對齊方式、縮進等段落格式;
  • 美化表格(邊框、對齊、單元格合并);
  • 設置頁眉頁腳、頁碼、文檔布局(頁邊距、紙張大?。?。

二、Word自動化排版完整流程(實戰(zhàn)案例)

以“員工手冊.docx”為例(原始文檔為無格式的純文本),按“基礎樣式→段落排版→表格美化→頁面布局→頁眉頁腳”的邏輯完成自動化排版。

步驟1:加載Word文檔并初始化基礎設置

先讀取原始文檔,配置全局字體(解決中文顯示問題),為后續(xù)排版打下基礎:

from docx import Document
from docx.shared import Pt, Inches, RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn

# 1. 加載原始Word文檔(或創(chuàng)建新文檔:doc = Document())
doc = Document("員工手冊_原始.docx")

# 2. 設置文檔全局字體(關鍵:解決中文顯示異常)
# 全局默認樣式:微軟雅黑、小四(12磅)、黑色
normal_style = doc.styles['Normal']
normal_style.font.name = '微軟雅黑'  # 西文字體
normal_style._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')  # 中文字體
normal_style.font.size = Pt(12)
normal_style.font.color.rgb = RGBColor(0, 0, 0)  # 黑色

print("文檔加載并完成全局字體初始化!")

步驟2:字符樣式自動化排版(字體、字號、顏色)

針對標題、正文、強調文本等不同字符類型,批量設置統一樣式,替代手動選中文本調整格式:

# 定義樣式配置函數(復用性更高)
def set_char_style(run, font_name='微軟雅黑', font_size=12, bold=False, italic=False, color=RGBColor(0,0,0)):
    """
    配置字符樣式
    :param run: 字符運行對象(docx.text.run.Run)
    :param font_name: 字體名稱
    :param font_size: 字號(磅)
    :param bold: 是否加粗
    :param italic: 是否斜體
    :param color: 字體顏色(RGBColor)
    """
    run.font.name = font_name
    run._element.rPr.rFonts.set(qn('w:eastAsia'), font_name)
    run.font.size = Pt(font_size)
    run.font.bold = bold
    run.font.italic = italic
    run.font.color.rgb = color

# 1. 批量設置標題樣式(文檔中前3個段落為一級/二級/三級標題)
# 一級標題:二號字、加粗、居中、深藍色
title1 = doc.paragraphs[0].runs[0]
set_char_style(title1, font_size=22, bold=True, color=RGBColor(0, 51, 102))
doc.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

# 二級標題:小三號字、加粗、左對齊、深藍色
title2 = doc.paragraphs[1].runs[0]
set_char_style(title2, font_size=15, bold=True, color=RGBColor(0, 51, 102))
doc.paragraphs[1].alignment = WD_PARAGRAPH_ALIGNMENT.LEFT

# 三級標題:小四號字、加粗、左對齊、深灰色
title3 = doc.paragraphs[2].runs[0]
set_char_style(title3, font_size=12, bold=True, color=RGBColor(51, 51, 51))
doc.paragraphs[2].alignment = WD_PARAGRAPH_ALIGNMENT.LEFT

# 2. 批量設置正文強調文本(如“注意:”“警告:”標紅加粗)
for para in doc.paragraphs:
    for run in para.runs:
        if "注意:" in run.text:
            set_char_style(run, bold=True, color=RGBColor(255, 0, 0))
        elif "警告:" in run.text:
            set_char_style(run, bold=True, color=RGBColor(255, 102, 0))

print("字符樣式排版完成!")

步驟3:段落格式自動化排版(間距、縮進、對齊)

調整段落的行間距、段前段后間距、首行縮進等,解決手動調整段落格式的繁瑣:

# 定義段落樣式配置函數
def set_para_style(para, line_spacing=1.5, space_before=0, space_after=5, indent=2):
    """
    配置段落樣式
    :param para: 段落對象(docx.text.paragraph.Paragraph)
    :param line_spacing: 行間距(倍)
    :param space_before: 段前間距(磅)
    :param space_after: 段后間距(磅)
    :param indent: 首行縮進(字符數)
    """
    # 行間距
    para.paragraph_format.line_spacing = line_spacing
    # 段前/段后間距(磅)
    para.paragraph_format.space_before = Pt(space_before)
    para.paragraph_format.space_after = Pt(space_after)
    # 首行縮進(2字符,需轉換為磅,1字符≈12磅)
    para.paragraph_format.first_line_indent = Pt(indent * 12)

# 1. 批量設置正文段落格式(跳過前3個標題段落)
for i, para in enumerate(doc.paragraphs):
    if i >= 3:  # 標題段落已單獨設置,僅處理正文
        set_para_style(
            para,
            line_spacing=1.5,  # 1.5倍行間距
            space_before=0,    # 段前0磅
            space_after=5,     # 段后5磅
            indent=2           # 首行縮進2字符
        )

# 2. 單獨調整標題段落的間距
doc.paragraphs[0].paragraph_format.space_after = Pt(15)  # 一級標題段后15磅
doc.paragraphs[1].paragraph_format.space_after = Pt(10)  # 二級標題段后10磅
doc.paragraphs[2].paragraph_format.space_after = Pt(8)   # 三級標題段后8磅

print("段落格式排版完成!")

步驟4:表格自動化美化(邊框、對齊、單元格格式)

Word中的表格常需手動調整邊框、單元格對齊、列寬,通過代碼批量美化:

# 遍歷文檔中所有表格,統一美化
for table in doc.tables:
    # 1. 表格整體樣式:居中對齊、顯示邊框
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    table.style = 'Table Grid'  # 顯示完整邊框(內置樣式)
    
    # 2. 設置表頭樣式(第一行)
    for cell in table.rows[0].cells:
        # 表頭文字:加粗、居中、淺藍色背景
        for para in cell.paragraphs:
            para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
            for run in para.runs:
                set_char_style(run, bold=True, color=RGBColor(0, 51, 102))
        # 單元格背景色(淺藍色)
        cell.fill.color.rgb = RGBColor(230, 243, 255)
    
    # 3. 設置正文行樣式:文字居中、調整列寬
    for row in table.rows[1:]:
        for i, cell in enumerate(row.cells):
            # 單元格文字居中
            for para in cell.paragraphs:
                para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
            # 按列調整寬度(第1列2英寸,其余1.5英寸)
            cell.width = Inches(2) if i == 0 else Inches(1.5)

print("表格美化完成!")

步驟5:頁面布局與頁眉頁腳自動化設置

配置頁邊距、紙張大小、頁碼、頁眉等頁面級格式,替代手動調整“頁面布局”和“插入頁眉頁腳”:

from docx.enum.section import WD_ORIENTATION
from docx.enum.text import WD_ALIGN_PARAGRAPH

# 1. 設置頁面布局(A4紙張、頁邊距)
section = doc.sections[0]
section.page_width = Inches(8.27)  # A4寬度
section.page_height = Inches(11.69) # A4高度
# 設置頁邊距(上2.54cm,下2.54cm,左3cm,右2.5cm)
section.top_margin = Inches(1)      # 1英寸≈2.54cm
section.bottom_margin = Inches(1)
section.left_margin = Inches(1.18)
section.right_margin = Inches(0.98)

# 2. 設置頁眉(文檔名稱+分隔線)
header = section.header
header_para = header.paragraphs[0]
header_para.text = "XX公司員工手冊 - 標準化文檔"
header_para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
# 頁眉文字樣式:小五號字、灰色
for run in header_para.runs:
    set_char_style(run, font_size=10.5, color=RGBColor(102, 102, 102))

# 3. 設置頁腳(頁碼+日期)
footer = section.footer
# 頁碼段落(居中)
footer_para1 = footer.paragraphs[0]
footer_para1.text = "第 {PAGE} 頁,共 {NUMPAGES} 頁"
footer_para1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
# 日期段落(右對齊)
footer_para2 = footer.add_paragraph("2025年01月01日")
footer_para2.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
for run in footer_para2.runs:
    set_char_style(run, font_size=10.5)

print("頁面布局與頁眉頁腳設置完成!")

步驟6:保存排版后的文檔

# 保存排版后的文檔
doc.save("員工手冊_排版完成.docx")
print("Word文檔自動化排版完成,已保存為「員工手冊_排版完成.docx」!")

三、高頻排版場景拓展

場景1:批量排版多份Word文檔

若有多個同類型文檔(如各部門的報告),可遍歷文件夾批量應用排版規(guī)則:

import os

# 定義排版函數(復用上述所有邏輯)
def format_word(file_path, output_path):
    doc = Document(file_path)
    # 1. 全局字體設置(省略,同步驟1)
    # 2. 字符樣式設置(省略,同步驟2)
    # 3. 段落格式設置(省略,同步驟3)
    # 4. 表格美化(省略,同步驟4)
    # 5. 頁面布局(省略,同步驟5)
    doc.save(output_path)

# 遍歷文件夾中的Word文檔
input_folder = "待排版文檔"
output_folder = "排版完成文檔"
if not os.path.exists(output_folder):
    os.mkdir(output_folder)

for file_name in os.listdir(input_folder):
    if file_name.endswith(".docx"):
        input_path = os.path.join(input_folder, file_name)
        output_path = os.path.join(output_folder, file_name.replace(".docx", "_排版完成.docx"))
        format_word(input_path, output_path)

print("多份Word文檔批量排版完成!")

場景2:按模板批量生成并排版文檔

結合Excel數據源,批量生成帶標準化排版的Word文檔(如員工通知書):

import pandas as pd

# 讀取Excel中的員工數據
df = pd.read_excel("員工信息.xlsx")

for index, row in df.iterrows():
    # 創(chuàng)建新文檔
    doc = Document()
    # 1. 設置全局字體
    normal_style = doc.styles['Normal']
    normal_style.font.name = '微軟雅黑'
    normal_style._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')
    
    # 2. 添加標題并排版
    title = doc.add_heading(f'{row["姓名"]}的轉正通知書', level=0)
    title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    set_char_style(title.runs[0], font_size=22, bold=True)
    
    # 3. 添加正文并排版
    para = doc.add_paragraph(f'尊敬的{row["姓名"]}:您于{row["入職日期"]}入職,現正式轉正。')
    set_para_style(para, indent=2)
    
    # 4. 添加表格并美化(省略,同步驟4)
    
    # 5. 保存文檔
    doc.save(f'轉正通知書_{row["姓名"]}.docx')

print("批量生成并排版Word文檔完成!")

四、常見問題與解決方法

1.中文字體顯示異常:必須同時設置font.name(西文)和eastAsia(中文)字體,缺一不可:

run.font.name = '微軟雅黑'
run._element.rPr.rFonts.set(qn('w:eastAsia'), '微軟雅黑')

2.行間距設置無效line_spacing支持多種格式,建議用“倍數”或固定值:

para.paragraph_format.line_spacing = Pt(20)  # 固定20磅行間距
para.paragraph_format.line_spacing = 1.5     # 1.5倍行間距

3.表格邊框不顯示:需指定內置表格樣式,而非僅設置單元格邊框:

table.style = 'Table Grid'  # 顯示完整邊框

4.頁碼占位符不生效{PAGE} {NUMPAGES}是Word域代碼,需保存后在Word中更新域:

  • 手動更新:選中頁碼 → 右鍵 → 更新域;
  • 自動更新:可結合win32com庫(需額外安裝pywin32)。

5.段落縮進計算錯誤:1個中文字符≈12磅,首行縮進2字符需設置為Pt(24)

para.paragraph_format.first_line_indent = Pt(2 * 12)

以上就是Python實現Word文檔自動化排版的完整流程的詳細內容,更多關于Python Word自動化排版的資料請關注腳本之家其它相關文章!

相關文章

  • 基于Python?+?PyQt搭建可視化頁面的詳細教程

    基于Python?+?PyQt搭建可視化頁面的詳細教程

    PyQt是一個Python綁定庫,它是基于Qt庫的,PyQt提供了一整套豐富的組件,包括窗口、按鈕、菜單、列表框等,以及事件處理、布局管理、網絡通信等多種功能,本文介紹了基于Python?+?PyQt搭建可視化頁面的詳細教程,需要的朋友可以參考下
    2024-07-07
  • Python使用Tkinter+openpyxl處理Excel文件并顯示實時進度條

    Python使用Tkinter+openpyxl處理Excel文件并顯示實時進度條

    在項目開發(fā)或數據處理中,經常需要批量處理 Excel 文件,本文將分析如何使用 openpyxl 正確處理合并單元格并將單元格轉為字符串,同時結合 Tkinter 實現帶進度條的圖形界面實時顯示處理進度,感興趣的小伙伴可以了解下
    2026-01-01
  • Python如何讀取PDF文檔(或TXT)

    Python如何讀取PDF文檔(或TXT)

    這篇文章主要介紹了Python如何讀取PDF文檔(或TXT),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python數字圖像處理之圖像自動閾值分割示例

    python數字圖像處理之圖像自動閾值分割示例

    這篇文章主要為大家介紹了python數字圖像處理之圖像自動閾值分割示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Python+Opencv實現圖像匹配功能(模板匹配)

    Python+Opencv實現圖像匹配功能(模板匹配)

    這篇文章主要為大家詳細介紹了Python+Opencv實現圖像匹配功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Python使用get_text()方法從大段html中提取文本的實例

    Python使用get_text()方法從大段html中提取文本的實例

    今天小編就為大家分享一篇Python使用get_text()方法從大段html中提取文本的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python使用Spire.Doc for .NET輕松實現Word和Markdown互轉

    Python使用Spire.Doc for .NET輕松實現Word和Markdown互轉

    在寫作、技術文檔管理和知識庫建設中,Word 和 Markdown 是我們最常打交道的兩種文檔格式,本文將詳細介紹如何使用 Spire.Doc for .NET 在 Python 環(huán)境中高效實現 Word 與 Markdown 的互轉,有需要的小伙伴可以了解下
    2026-06-06
  • Python蓄水池算法的應用案例與代碼詳解

    Python蓄水池算法的應用案例與代碼詳解

    蓄水池算法(Reservoir Sampling)是一種用于處理大規(guī)模數據流的隨機抽樣算法,該算法能夠在不知道數據流大小的情況下,從數據流中均勻隨機地抽取固定大小的樣本,本文給大家介紹了一個詳細的Python蓄水池算法的實現,包括完整的代碼示例,需要的朋友可以參考下
    2024-11-11
  • Python利用Beautiful Soup模塊創(chuàng)建對象詳解

    Python利用Beautiful Soup模塊創(chuàng)建對象詳解

    這篇文章主要介紹了Python利用Beautiful Soup模塊創(chuàng)建對象的相關資料,文中介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Python通過cv2讀取多個USB攝像頭

    Python通過cv2讀取多個USB攝像頭

    這篇文章主要為大家詳細介紹了Python通過cv2讀取多個USB攝像頭,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評論

宜兰县| 双桥区| 龙江县| 略阳县| 普陀区| 盱眙县| 浦东新区| 平昌县| 库尔勒市| 凤凰县| 东平县| 庐江县| 金华市| 南投市| 枝江市| 四平市| 武定县| 镇平县| 河间市| 自治县| 桂林市| 曲周县| 阳朔县| 会宁县| 台南县| 黑山县| 龙州县| 和田市| 绥中县| 漯河市| 汉中市| 沽源县| 图们市| 五原县| 滁州市| 湖南省| 自治县| 古蔺县| 康马县| 山丹县| 察隅县|