欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python實(shí)現(xiàn)一鍵往Word文檔的表格中填寫(xiě)數(shù)據(jù)

 更新時(shí)間:2023年12月13日 11:12:05   作者:艾派森  
在工作中,我們經(jīng)常遇到將Excel表中的部分信息填寫(xiě)到Word文檔的對(duì)應(yīng)表格中,以生成報(bào)告,方便打印,所以本文小編就給大家介紹了如何使用Python實(shí)現(xiàn)一鍵往Word文檔的表格中填寫(xiě)數(shù)據(jù),文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下

一、Python處理Word

  • Python處理Word的好處

使用Python處理Word文檔具有許多優(yōu)勢(shì),以下是一些主要的好處:

  1. 自動(dòng)化和批量處理: Python可以幫助你自動(dòng)化處理大量的Word文檔,例如批量替換文本、生成報(bào)告、提取數(shù)據(jù)等。這樣可以節(jié)省大量的時(shí)間和勞動(dòng)力。

  2. 數(shù)據(jù)提取和轉(zhuǎn)換: 如果你需要從大量的Word文檔中提取特定數(shù)據(jù),Python可以輕松實(shí)現(xiàn)這一點(diǎn)。你可以編寫(xiě)腳本來(lái)搜索并提取你需要的信息,然后將其轉(zhuǎn)換為其他格式,如CSV、Excel或數(shù)據(jù)庫(kù)。

  3. 定制化和自由度: 使用Python處理Word文檔意味著你可以根據(jù)自己的需求定制處理過(guò)程。你可以創(chuàng)建定制的模板、樣式和布局,以及根據(jù)項(xiàng)目需求進(jìn)行靈活的調(diào)整。

  4. 與其他工具和技術(shù)的集成: Python可以與許多其他庫(kù)和技術(shù)進(jìn)行集成,例如數(shù)據(jù)庫(kù)、Web服務(wù)、數(shù)據(jù)分析工具等。這使得你可以將Word文檔的處理與其他工作流程結(jié)合起來(lái),實(shí)現(xiàn)更復(fù)雜的任務(wù)。

  5. 文檔生成和報(bào)告: 如果你需要定期生成報(bào)告或文檔,Python可以通過(guò)自動(dòng)生成文本、圖表和表格等來(lái)實(shí)現(xiàn)。這對(duì)于數(shù)據(jù)分析、項(xiàng)目管理和業(yè)務(wù)報(bào)告等非常有用。

  6. 版本控制和代碼重用: 使用Python代碼處理Word文檔可以實(shí)現(xiàn)代碼重用和版本控制。你可以將處理文檔的代碼存儲(chǔ)在版本控制系統(tǒng)中,以便團(tuán)隊(duì)成員協(xié)作、維護(hù)和共享代碼。

  7. 跨平臺(tái)性: 大多數(shù)Python庫(kù)可以在多個(gè)操作系統(tǒng)上運(yùn)行,因此你可以在Windows、Linux和macOS等不同平臺(tái)上處理Word文檔。

  • Python處理Word的第三方庫(kù)

在Python中,有幾個(gè)第三方庫(kù)可以用于處理Word文檔。以下是一些常用的第三方庫(kù):

  1. python-docx: 這是一個(gè)用于創(chuàng)建和修改Microsoft Word文檔(.docx格式)的流行庫(kù)。它允許你讀取、編輯和創(chuàng)建Word文檔,包括段落、表格、圖像等。

  2. pywin32(僅限Windows): 這個(gè)庫(kù)允許你在Windows上與Microsoft Office應(yīng)用程序進(jìn)行交互,包括Word。它可以用于自動(dòng)化操作,例如創(chuàng)建、打開(kāi)、編輯和保存文檔。

  3. docx2txt: 這個(gè)庫(kù)可以用來(lái)將.docx文件轉(zhuǎn)換為純文本(.txt格式)。它適用于從Word文檔中提取文本內(nèi)容。

  4. python-docx-template: 這個(gè)庫(kù)擴(kuò)展了python-docx庫(kù),使你能夠在模板中插入變量和循環(huán),并以更動(dòng)態(tài)的方式生成Word文檔。

  5. py-docx: 這是另一個(gè)用于處理.docx文件的庫(kù)。它提供了類(lèi)似python-docx的功能,但使用不同的接口。

二、一鍵往Word文檔的表格中填寫(xiě)數(shù)據(jù)

技術(shù)工具:

Python版本:3.9

代碼編輯器:jupyter notebook

在工作中,我們經(jīng)常遇到將Excel表中的部分信息填寫(xiě)到Word文檔的對(duì)應(yīng)表格中,以生成報(bào)告,方便打印。今天我們就來(lái)試試如何往固定的Word模板中填寫(xiě)數(shù)據(jù)。此例要求將Excel檔的“收貨數(shù)據(jù)”填寫(xiě)到Word檔的“收貨記錄”中去,并加總收貨數(shù)量。模板是下面這樣的。

要求結(jié)果是這樣的:

首先,需要從Excel表格中提取數(shù)據(jù)。

#從Excel表中提取數(shù)據(jù)
from openpyxl import load_workbook
wb = load_workbook("收貨數(shù)據(jù).xlsx")
ws = wb.active
data=[]
for row in range(2,ws.max_row+1):
    seq = ws["A"+str(row)].value
    supplier = ws["B"+str(row)].value
    material_pn = ws["C"+str(row)].value
    material_model = ws["D"+str(row)].value
    desp = ws["E"+str(row)].value
    qty = ws["F"+str(row)].value
    date = ws["G"+str(row)].value.date()
    info = [seq, supplier, material_pn, material_model, desp, qty, date]
    data.append(info)
# 檢查一下數(shù)據(jù)
data[0]

由于需要將數(shù)量列的數(shù)據(jù)加總,所以先定義一個(gè)加總函數(shù),以便后面調(diào)用。

#定義數(shù)量加總函數(shù)
def Sum_list(list):
    s = 0
    for i in list: #累加列表中的所有數(shù)
        s+=i
    return s
# 加總數(shù)量列的所有數(shù)字
qty_list=[]
for i in data:
    qty_list.append(i[5]) #數(shù)量在內(nèi)層列表的第6個(gè)位置,索引是5
sum_qty= Sum_list(qty_list) #調(diào)用加總函數(shù)加總
sum_qty

定義單元格合并函數(shù) 

#定義合并單元格的函數(shù)    
def Merge_cells(table,target_list,start_row,col):
    '''
    table: 是需要操作的表格
    target_list: 是目標(biāo)列表,即含有重復(fù)數(shù)據(jù)的列表
    start_row: 是開(kāi)始行,即表格中開(kāi)始比對(duì)數(shù)據(jù)的行(需要將標(biāo)題除開(kāi))
    col: 是需要處理數(shù)據(jù)的列
    '''
    start = 0 #開(kāi)始行計(jì)數(shù)
    end = 0 #結(jié)束行計(jì)數(shù)
    reference = target_list[0] #設(shè)定基準(zhǔn),以列表中的第一個(gè)字符串開(kāi)始
    for i in range(len(target_list)): #遍歷列表
        if target_list[i] != reference: #開(kāi)始比對(duì),如果內(nèi)容不同執(zhí)行如下
            reference = target_list[i] #基準(zhǔn)變成列表中下一個(gè)字符串
            end = i - 1 
            table.cell(start+start_row,col).merge(table.cell(end+start_row,col))
            start = end + 1
        if i == len(target_list) - 1: #遍歷到最后一行,按如下操作
            end = i
            table.cell(start+start_row,col).merge(table.cell(end+start_row,col))

然后往word的表格中寫(xiě)入數(shù)據(jù),并合并單元格。

#數(shù)據(jù)提取即處理完畢后,就可以往Word的表格中寫(xiě)入數(shù)據(jù)了
from docx import Document
doc = Document("收貨記錄模板.docx")
#讀取word文檔中的第一個(gè)表格的第二和第三列除標(biāo)題和尾部總數(shù)行的數(shù)據(jù)
table = doc.tables[0] #已確定是第一個(gè)表格,其索引是0
supplier = [] #存儲(chǔ)供應(yīng)商名稱(chēng)
pn = [] #存儲(chǔ)物料編碼
for i in data:
    supplier.append(i[1])
    pn.append(i[2])
#按需增加行,以便填寫(xiě)數(shù)據(jù)
for i in range(len(supplier)): #模板中已經(jīng)有一行了,所以總共只需增加len(supplier)行
    table.add_row() 
#增加好行后先做合并單元格操作
Merge_cells(table,supplier,1,1) #開(kāi)始合并行為2,索引為1;供應(yīng)商名稱(chēng)是在2列,索引為1
Merge_cells(table,pn,1,2) #開(kāi)始合并行為2,索引為1;物料編碼是在3列,索引為2
 
#寫(xiě)入數(shù)據(jù)到表格
for row in range(1,len(supplier)+1):
    for col in range(7):        
        table.cell(row,col).text = str(data[row-1][col])
 
max_row = len(table.rows) #獲取最大一行
qty_row = max_row-1 #確定需要寫(xiě)入加總數(shù)據(jù)的一行
table.cell(qty_row,5).merge(table.cell(qty_row,5)) #合并右下角用于填寫(xiě)數(shù)量的兩個(gè)單元格
table.cell(qty_row,4).text = '總數(shù):'
table.cell(qty_row,5).text = str(sum_qty)
 
doc.save("收貨記錄.docx")

由于合并供應(yīng)商名稱(chēng)和物料編碼兩列中的相同內(nèi)容的單元格,所有需要把這兩列的信息從總數(shù)據(jù)`data`中單獨(dú)提取出來(lái)。新建了`supplier`和`pn`兩個(gè)空列表,然后遍歷`data`,將數(shù)據(jù)取出并存入空列表。隨后,我們根據(jù)實(shí)際需要,新增一些空白行,以便后面寫(xiě)入數(shù)據(jù)。新增行的數(shù)量以`supplier`列表中元素的個(gè)數(shù)為依據(jù)。這個(gè)表格已經(jīng)存在一個(gè)空白行,算上外行要填“總數(shù)”,只需增加`supplier`列表中元素的個(gè)數(shù)對(duì)應(yīng)那么多行就夠了。當(dāng)然這里也可以以列表`pn`中元素個(gè)數(shù)為依據(jù),兩者是相等的。增加好行后,先調(diào)用函數(shù)`Merge_cells`做合并單元格操作(如果先寫(xiě)入數(shù)據(jù),再合并,會(huì)導(dǎo)致單元格內(nèi)容重復(fù))。合并完后,就可以寫(xiě)入數(shù)據(jù)到表格了,此處遍歷需要寫(xiě)入數(shù)據(jù)的行和列,然后從`data`中提取數(shù)據(jù)。數(shù)據(jù)行寫(xiě)完后,還需要寫(xiě)入最后一行的“總數(shù)”字樣和總的物料數(shù)量。最后保存數(shù)據(jù),得到如下結(jié)果:

以上就是使用Python實(shí)現(xiàn)一鍵往Word文檔的表格中填寫(xiě)數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于Python一鍵往Word填數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于Python開(kāi)發(fā)圖片分割器

    基于Python開(kāi)發(fā)圖片分割器

    在圖像處理領(lǐng)域,經(jīng)常需要將一張大圖切分成多個(gè)小圖片,本文將介紹如何使用Python開(kāi)發(fā)一個(gè)帶圖形界面的圖片分割工具,有需要的可以參考一下
    2024-12-12
  • python 尋找離散序列極值點(diǎn)的方法

    python 尋找離散序列極值點(diǎn)的方法

    今天小編就為大家分享一篇python 尋找離散序列極值點(diǎn)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5布局控件QGridLayout詳細(xì)使用方法與實(shí)例

    python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5布局控件QGridLayout詳細(xì)使用方法與實(shí)例

    這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5布局控件QGridLayout詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下
    2020-03-03
  • Python使用unittest進(jìn)行有效測(cè)試的示例詳解

    Python使用unittest進(jìn)行有效測(cè)試的示例詳解

    這篇文章主要介紹了如何使用?unittest?來(lái)編寫(xiě)和運(yùn)行單元測(cè)試,希望通過(guò)閱讀本文,大家能了解?unittest?的基本使用方法,以及如何使用?unittest?中的斷言方法和測(cè)試用例組織結(jié)構(gòu)
    2023-06-06
  • 簡(jiǎn)單了解Python讀取大文件代碼實(shí)例

    簡(jiǎn)單了解Python讀取大文件代碼實(shí)例

    這篇文章主要介紹了簡(jiǎn)單了解Python讀取大文件代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python 實(shí)現(xiàn)求解字符串集的最長(zhǎng)公共前綴方法

    python 實(shí)現(xiàn)求解字符串集的最長(zhǎng)公共前綴方法

    今天小編就為大家分享一篇python 實(shí)現(xiàn)求解字符串集的最長(zhǎng)公共前綴方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python編程實(shí)現(xiàn)簡(jiǎn)易的音樂(lè)播放器基本操作

    Python編程實(shí)現(xiàn)簡(jiǎn)易的音樂(lè)播放器基本操作

    這篇文章主要來(lái)教大家利用Python編程來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)易的音樂(lè)播放器,文中含有基本功能的操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • 使用Python保護(hù)或加密Excel文件的7種方法

    使用Python保護(hù)或加密Excel文件的7種方法

    Excel文件通常包含敏感信息,如財(cái)務(wù)記錄、客戶數(shù)據(jù)或?qū)S泄?保護(hù)和加密這些文件對(duì)于防止未經(jīng)授權(quán)的訪問(wèn)和維護(hù)機(jī)密性至關(guān)重要,在本文中,我們將探討如何使用Python自動(dòng)化Excel文件的安全保護(hù)和加密過(guò)程,確保數(shù)據(jù)的安全性,需要的朋友可以參考下
    2025-02-02
  • 淺談windows環(huán)境下pytorch安裝踩坑

    淺談windows環(huán)境下pytorch安裝踩坑

    本文主要介紹了在Windows環(huán)境下使用Anaconda創(chuàng)建Python環(huán)境并安裝Pytorch的過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Webots下載安裝?+?Pycharm聯(lián)調(diào)使用教程

    Webots下載安裝?+?Pycharm聯(lián)調(diào)使用教程

    Webots是一個(gè)開(kāi)源的三維移動(dòng)機(jī)器人模擬器,它最初是作為研究移動(dòng)機(jī)器人中各種控制算法的研究工具開(kāi)發(fā)的,自2018年12月起,Webots作為開(kāi)源軟件發(fā)布,并獲得Apache 2.0許可證,這篇文章主要介紹了Webots下載安裝?+?Pycharm聯(lián)調(diào)?,需要的朋友可以參考下
    2023-02-02

最新評(píng)論