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

Python操作Word頁眉頁腳的完整指南

 更新時間:2026年04月15日 08:27:10   作者:傻啦嘿喲  
本文介紹了使用Python操作Word文檔中頁眉頁腳的方法,包括安裝python-docx庫、操作節(jié)、添加內(nèi)容、調(diào)整格式、保存文檔等技巧,最后通過實際案例展示了Python在處理大量文檔時的高效性,需要的朋友可以參考下

加班到晚上十點,我終于改完了那份50頁的季度報告。按下保存,關(guān)掉電腦,心里想著明天終于可以交差了。

結(jié)果第二天一早,領(lǐng)導(dǎo)說:“小張,報告做得不錯,但每頁頂部加上公司Logo和保密級別,底部加上頁碼和日期。”

打開那50頁的文檔,我愣住了。難不成要一頁一頁手動加?正當(dāng)我準(zhǔn)備認命時,旁邊同事瞥了一眼:“你不會用Python嗎?幾行代碼的事。”

就這樣,我踏上了折騰Word頁眉頁腳的路。

選哪個庫?這事兒得說清楚

Python操作Word主要有兩大家族:python-docxAspose.Words。前者免費開源,后者是商業(yè)產(chǎn)品但功能更強。

免費的真香。python-docx雖然有些地方需要繞彎路,但應(yīng)付日常工作綽綽有余。商業(yè)版強大但收費,除非你的工作天天跟文檔打交道,否則先別急著掏錢。

安裝也很簡單:

pip install python-docx 

搞定。我們從頭開始。

頁眉頁腳在哪里?先找到“節(jié)”

Word文檔里藏著一個概念叫“節(jié)”。每個文檔至少有一個節(jié),節(jié)下面才有頁眉和頁腳。這就像找文件得先進文件夾。

from docx import Document

doc = Document()
section = doc.sections[0]  # 獲取第一個節(jié)

拿到節(jié)之后,頁眉和頁腳就暴露了:

header = section.header
footer = section.footer

就這么簡單。

往頁眉里寫點東西

頁眉其實就是一個可以放文字、圖片的地方。往里面加內(nèi)容的方式跟正文差不多:

from docx import Document

doc = Document()
section = doc.sections[0]

# 拿到頁眉,加個段落
header = section.header
header_para = header.paragraphs[0]  # 默認就有一個段落
header_para.text = "公司機密文件 - 嚴(yán)禁外傳"

doc.save("report.docx")

這段代碼執(zhí)行完,打開文檔,每頁頂部都會出現(xiàn)這行字。

想玩點花樣?調(diào)整字體和對齊方式:

from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

header_para.text = "公司機密文件"
header_para.style.font.size = Pt(12)
header_para.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

頁腳里加個頁碼

頁碼比普通文字麻煩一點。python-docx不直接支持自動頁碼,但可以插入Word的域代碼來實現(xiàn)。

from docx.oxml import OxmlElement
from docx.oxml.ns import qn

def add_page_number(paragraph):
    """在段落中插入自動頁碼"""
    run = paragraph.add_run()
    
    # 添加頁碼域代碼
    fldChar = OxmlElement('w:fldChar')
    fldChar.set(qn('w:fldCharType'), 'begin')
    run._r.append(fldChar)
    
    instrText = OxmlElement('w:instrText')
    instrText.text = "PAGE"
    run._r.append(instrText)
    
    fldChar = OxmlElement('w:fldChar')
    fldChar.set(qn('w:fldCharType'), 'end')
    run._r.append(fldChar)

# 使用
footer = section.footer
footer_para = footer.paragraphs[0]
add_page_number(footer_para)

保存文檔后,頁腳就會顯示當(dāng)前頁碼。

封面不要頁眉?沒問題

很多文檔要求封面不顯示頁眉,從第二頁開始才需要。這就需要用到“首頁不同”的設(shè)置。

section = doc.sections[0]
section.different_first_page_header_footer = True

# 首頁頁眉(留空或放不同內(nèi)容)
first_header = section.first_page_header
first_header.paragraphs[0].text = ""  # 封面不顯示

# 其他頁面的正常頁眉
normal_header = section.header
normal_header.paragraphs[0].text = "內(nèi)部資料"

書籍排版還有個小講究:奇數(shù)頁和偶數(shù)頁的頁眉可以不一樣。奇數(shù)頁放章節(jié)名,偶數(shù)頁放書名,打開書的時候左右兩側(cè)看起來特別協(xié)調(diào)。

# 開啟奇偶頁不同
section.odd_and_even_pages_header_footer = True

odd_header = section.odd_page_header
odd_header.paragraphs[0].text = "第一章 Python基礎(chǔ)"

even_header = section.even_page_header
even_header.paragraphs[0].text = "Python編程指南"

頁眉里放個Logo

公司的Logo往頁眉一放,文檔檔次立馬不一樣。

from docx.shared import Inches

header = section.header
para = header.paragraphs[0]
run = para.add_run()
run.add_picture("logo.png", width=Inches(1.5))

# 文字跟在圖片后面
run = para.add_run("  某某科技有限公司")

Logo別太大,1到1.5英寸寬就夠了。圖片路徑要寫對,不然Word會報錯。

文檔分節(jié):不同部分不同設(shè)置

長文檔通常要分節(jié)。封面是一節(jié),目錄是一節(jié),正文又是一節(jié)。每節(jié)的頁眉頁腳可以完全獨立。

關(guān)鍵在于打斷“鏈接到前一節(jié)”的關(guān)系:

# 獲取第二節(jié)(索引1)
section2 = doc.sections[1]

# 斷開鏈接,這樣第二節(jié)的頁眉就可以獨立設(shè)置了
section2.header.is_linked_to_previous = False
section2.footer.is_linked_to_previous = False

# 現(xiàn)在可以自由設(shè)置第二節(jié)的頁眉了
section2.header.paragraphs[0].text = "正文部分的頁眉"

Word文檔操作的核心秘密就在這里:節(jié)是獨立單位,但默認會繼承前一節(jié),想獨立就必須斷開鏈接。

批量處理:幾十個文檔一鍵搞定

實際工作中經(jīng)常要處理一堆文檔。循環(huán)遍歷就行了:

import os
from docx import Document

def add_header_to_all(directory, header_text):
    """給目錄下所有docx文件添加相同的頁眉"""
    for filename in os.listdir(directory):
        if filename.endswith('.docx'):
            filepath = os.path.join(directory, filename)
            doc = Document(filepath)
            
            section = doc.sections[0]
            header = section.header
            header.paragraphs[0].text = header_text
            
            doc.save(filepath)  # 覆蓋保存
            print(f"處理完成: {filename}")

# 使用
add_header_to_all("./reports", "2024年度報告")

幾十個文件幾秒鐘就搞定了,不用一個個打開。

踩坑提醒

python-docx對已經(jīng)存在的文檔修改頁眉時,有個坑要注意。如果文檔的頁眉以前被設(shè)置成“鏈接到前一節(jié)”,修改可能會不生效。解決辦法很簡單:

section = doc.sections[0]
section.header.is_linked_to_previous = False

先斷開,再操作,保證沒問題。

還有個常見問題:頁碼顯示不出來怎么辦?Word打開后按Ctrl+A全選,再按F9刷新所有域代碼,頁碼就出來了。因為域代碼需要手動觸發(fā)更新。

結(jié)語

那50頁的報告,我后來用Python跑了不到一秒就全部加好了頁眉頁腳。領(lǐng)導(dǎo)看了很滿意,我也有時間提前下班。

頁眉頁腳這東西,說白了就是Word給每頁加的一個固定區(qū)域。Python操作它,核心就是找到“節(jié)”,拿到頁眉或頁腳對象,然后往里面填內(nèi)容。分節(jié)、斷開鏈接、首頁不同、奇偶不同,就這幾個概念,弄懂了就能應(yīng)對絕大多數(shù)場景。

如果你只是偶爾用,python-docx完全夠用。如果要做很復(fù)雜的企業(yè)級文檔自動化,再考慮商業(yè)方案也不遲。

代碼寫完了,記得關(guān)電腦下班。

以上就是Python操作Word頁眉頁腳的完整指南的詳細內(nèi)容,更多關(guān)于Python操作Word頁眉頁腳的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python?Poetry實現(xiàn)高效依賴管理的新手指南

    Python?Poetry實現(xiàn)高效依賴管理的新手指南

    這篇文章主要為大家詳細介紹了Python如何使用Poetry實現(xiàn)高效依賴管理,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-05-05
  • 在Python中使用全局日志時需要注意的問題

    在Python中使用全局日志時需要注意的問題

    這篇文章主要介紹了在Python中使用全局日志時需要注意的問題, 作者由uliweb使用時遇到的問題分析全局日志出現(xiàn)錯誤時的解決方法,需要的朋友可以參考下
    2015-05-05
  • keras和tensorflow使用fit_generator 批次訓(xùn)練操作

    keras和tensorflow使用fit_generator 批次訓(xùn)練操作

    這篇文章主要介紹了keras和tensorflow使用fit_generator 批次訓(xùn)練操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 詳解python定時簡單爬取網(wǎng)頁新聞存入數(shù)據(jù)庫并發(fā)送郵件

    詳解python定時簡單爬取網(wǎng)頁新聞存入數(shù)據(jù)庫并發(fā)送郵件

    這篇文章主要介紹了python定時簡單爬取網(wǎng)頁新聞存入數(shù)據(jù)庫并發(fā)送郵件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Pytorch模型遷移和遷移學(xué)習(xí),導(dǎo)入部分模型參數(shù)的操作

    Pytorch模型遷移和遷移學(xué)習(xí),導(dǎo)入部分模型參數(shù)的操作

    這篇文章主要介紹了Pytorch模型遷移和遷移學(xué)習(xí),導(dǎo)入部分模型參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 深入理解numpy廣播機制

    深入理解numpy廣播機制

    廣播(Broadcast)是 numpy 對不同形狀(shape)的數(shù)組進行數(shù)值計算的方式,本文深入理解numpy廣播機制,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • 在Python中使用dict和set方法的教程

    在Python中使用dict和set方法的教程

    這篇文章主要介紹了在Python中使用dict和set方法的教程,dict字典是Python中的重要基礎(chǔ)知識,set與其類似,需要的朋友可以參考下
    2015-04-04
  • Flask中Cookie和Session理解與作用介紹

    Flask中Cookie和Session理解與作用介紹

    Flask是一個使用 Python 編寫的輕量級 Web 應(yīng)用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 。Flask使用 BSD 授權(quán)。Flask也被稱為 “microframework” ,因為它使用簡單的核心,用 extension 增加其他功能,F(xiàn)lask中Cookie和Session有什么區(qū)別呢
    2022-10-10
  • python實現(xiàn)的生成word文檔功能示例

    python實現(xiàn)的生成word文檔功能示例

    這篇文章主要介紹了python實現(xiàn)的生成word文檔功能,涉及Python數(shù)據(jù)查詢、遍歷及word文檔生成相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • python中的閉包用法實例詳解

    python中的閉包用法實例詳解

    這篇文章主要介紹了python中的閉包用法,以實例形式詳細分析了Python中閉包的概念及相關(guān)使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05

最新評論

长寿区| 徐州市| 吴旗县| 滦南县| 山丹县| 台东市| 明星| 仁布县| 综艺| 万载县| 九台市| 瓮安县| 逊克县| 长白| 冷水江市| 南平市| 丘北县| 丰台区| 紫金县| 天门市| 赤壁市| 新郑市| 蓝山县| 阆中市| 夏邑县| 德州市| 承德市| 阳曲县| 屯门区| 澄迈县| 永福县| 临邑县| 冀州市| 沙坪坝区| 濉溪县| 南通市| 夏河县| 东兴市| 呼玛县| 兰坪| 永州市|