亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python-docx讀取模板文檔并填充數(shù)據(jù)

 更新時間:2024年11月12日 09:56:43   作者:十連滿潛  
python-docx?是開源的一個?Python?庫,用于讀取、創(chuàng)建和更新Microsoft?Word?2007+(.docx)文件,下面我們就來看看如何利用python-docx讀取模板文檔并填充數(shù)據(jù)吧

簡介

python-docx 是開源的一個 Python 庫,用于讀取、創(chuàng)建和更新Microsoft Word 2007+(.docx)文件。目前最新版本是1.1.2。

官方文檔地址:python-docx.readthedocs.io/en/latest/

其開源倉庫地址:github.com/python-openxml/python-docx

準備docx文檔

docx 文檔可以用 office 打開,也可以用 WPS,這邊截圖使用的是 WPS,因為里面郵件合并部分 “插入合并域/Next域” 自帶的小書名號非常獨特,這個符號的正式名稱是角引號,主要用于法語、俄語、西班牙語等歐洲語言中,中文語境里使用較少,很適合作為后面遍歷行段內(nèi)容替換字符串時的標識符。

在 “插入域” 彈窗的選項中選擇域名為 “唯一標識符” 的選項插入,先前鼠標定位的位置就會添加上這個小書名號包裹的 “唯一標識符”。

只要插入了一個標識符,剩下的就可以復(fù)制粘貼了。角引號里面的內(nèi)容也可以改成自己想要的字段名稱,中英文不限。

像下面的示例表格,便是直接從前面這個唯一標識符復(fù)制過來的。復(fù)制時記得把角引號包裹住了。WPS里面鼠標點擊標識符時會自動出現(xiàn)截圖中的深色區(qū)域,很方便檢查。

不過這個郵件合并域功能目前我只在 WPS 的 “引用” 模塊里有找到,在 office 的 Word 里沒有找到對應(yīng)的地方。雖然 “插入” 里可以選擇 “域”,但操作起來容易出錯,我自己就沒看懂應(yīng)該選哪個去插入……

python代碼

前面特地添加一個表格做示例,主要是因為獲取文檔內(nèi)容時,表格需要單獨的遍歷。

from docx import Document

def merge_docx(doc, data):
    '''
    替換文檔里各個占位符,替換后保存
    :param data: 數(shù)據(jù)data = { '這句話的英文': 'Hello World!','這句話的加粗版本': 'Hello World!' }
    :return:
    '''
    # 遍歷文檔中的所有段落
    for para in doc.paragraphs:
        # 替換每個自定義合并域
        for key, value in data.items():
            if f"?{key}?" in para.text:
                para.text = para.text.replace(f"?{key}?", value)

    # 遍歷文檔中的所有表格,再遍歷單元格內(nèi)段落
    for table in doc.tables:
        for row in table.rows:
            for cell in row.cells:
                cell_text = cell.paragraphs[0].text
                if cell_text[1:-1] in data.keys():
                    key = cell_text[1:-1]
                    val = data[key] # cell.text.replace(f"?{key}?", data[key])
                    pa = cell.paragraphs[0]
                    pa.clear()
                    r = pa.add_run(val)
                    r.bold = True # 加粗需要在run級別設(shè)置


data={ '這句話的英文': 'Hello World!','這句話的加粗版本': 'Hello World!' }
doc=Document('test.docx')
merge_docx(doc,data)
doc.save('result.docx')

執(zhí)行完畢,文檔成功生成,里面的內(nèi)容也成功替換,如下圖:

docx轉(zhuǎn)pdf

有時候,文檔需要轉(zhuǎn)換成 PDF 格式,python-docx 缺少相應(yīng)的工具,因此只能尋求其他工具,比如 win32com,恰好,win32com 可以調(diào)用到辦公軟件里的 wdExportFormatPDF 方法,用來將文件導出成pdf。

這個方法在 office 和 WPS 里都有存在,WPS 的 WebOffice 文檔 可以做參考。

Office 官方的文檔也可以看看。

image.png

兩個軟件的可用方法還是有區(qū)別的,只是恰好在導出成PDF這方面是一致。體現(xiàn)在代碼中,最主要的便只剩下的調(diào)用的底層辦公軟件對象。

import win32com, pythoncom
from win32com.client import constants, gencache

def word2pdf(word_path):
    pdf_path = word_path.replace(".docx", ".pdf")
    pythoncom.CoInitialize()
    wc = win32com.client.constants
    # 下面這個地方,WPS 就用 kwps.application ,Office就用 word.application
    wps = gencache.EnsureDispatch("kwps.application")
    doc = wps.Documents.Open(word_path, ReadOnly=1)
    doc.SaveAs2(FileName=pdf_path, FileFormat=wc.wdExportFormatPDF)
    wps.Documents.Close(wc.wdDoNotSaveChanges)
    wps.Documents.Close()
    wps.Quit()

word2pdf('result.docx')

執(zhí)行完畢,文件成功導出。任務(wù)完成。

到此這篇關(guān)于python-docx讀取模板文檔并填充數(shù)據(jù)的文章就介紹到這了,更多相關(guān)python-docx讀取模板文檔內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解鎖Python并發(fā)編程中多線程與多進程的應(yīng)用

    解鎖Python并發(fā)編程中多線程與多進程的應(yīng)用

    本文我們將先從基本概念開始,然后通過詳細舉例探討每一種機制,特別關(guān)注多線程和多進程的應(yīng)用,最后分享一些實戰(zhàn)經(jīng)驗以及一種優(yōu)雅的編程技巧,希望對大家有所幫助
    2023-05-05
  • Python一行代碼識別發(fā)票并保存Excel示例詳解

    Python一行代碼識別發(fā)票并保存Excel示例詳解

    這篇文章主要為大家介紹了Python一行代碼識別發(fā)票并保存Excel示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Python實現(xiàn)準確獲取PDF文件中的標題

    Python實現(xiàn)準確獲取PDF文件中的標題

    想要在PDF文件中,解析獲取全部的標題,是一件比較麻煩的事情,這篇文章將介紹一種較為準確的提取標題的方式,感興趣的小伙伴可以了解一下
    2024-02-02
  • Python return語句如何實現(xiàn)結(jié)果返回調(diào)用

    Python return語句如何實現(xiàn)結(jié)果返回調(diào)用

    這篇文章主要介紹了Python return語句如何實現(xiàn)結(jié)果返回調(diào)用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Python使用Pandas生成日報的實現(xiàn)代碼

    Python使用Pandas生成日報的實現(xiàn)代碼

    Pandas是Python中一個強大的數(shù)據(jù)處理庫,它提供了許多功能強大的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,在本文中,我們將介紹Pandas的基本概念和如何使用它生成一個包含今天到未來20個工作日的日期列表的Excel文件,需要的朋友可以參考下
    2023-11-11
  • Python實現(xiàn)列表索引批量刪除的5種方法

    Python實現(xiàn)列表索引批量刪除的5種方法

    這篇文章主要介紹了Python實現(xiàn)列表索引批量刪除的5種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Python3.5實現(xiàn)的三級菜單功能示例

    Python3.5實現(xiàn)的三級菜單功能示例

    這篇文章主要介紹了Python3.5實現(xiàn)的三級菜單功能,涉及Python針對json格式數(shù)據(jù)的讀取、遍歷、查找、判斷等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • python繪制簡單彩虹圖

    python繪制簡單彩虹圖

    這篇文章主要為大家詳細介紹了python繪制簡單彩虹圖的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python 常見加密操作的實現(xiàn)

    Python 常見加密操作的實現(xiàn)

    這篇文章主要介紹了Python 常見加密操作的實現(xiàn),幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • Pytorch之Variable的用法

    Pytorch之Variable的用法

    今天小編就為大家分享一篇Pytorch之Variable的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評論