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

Python批量對word文檔進行操作步驟

 更新時間:2022年02月14日 08:43:30   作者:肥學(xué)  
這篇文章主要介紹了Python批量對word文檔進行操作,一步步逐步完成創(chuàng)建文檔,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下

導(dǎo)讀

前面幾章我們以經(jīng)介紹了怎么批量對excelppt操作今天我們說說對word文檔的批量操作

應(yīng)用

python-docx允許您創(chuàng)建新文檔以及對現(xiàn)有文檔進行更改。實際上,它只允許您對現(xiàn)有文檔進行更改;只是如果您從一個沒有任何內(nèi)容的文檔開始,一開始可能會覺得您是從頭開始創(chuàng)建一個文檔。

這個特性是一個強大的特性。文檔的外觀很大程度上取決于刪除所有內(nèi)容時留下的部分。樣式、頁眉和頁腳等內(nèi)容與主要內(nèi)容分開包含,允許您在起始文檔中進行大量自定義,然后出現(xiàn)在您生成的文檔中。

讓我們逐步完成創(chuàng)建文檔的步驟,一次創(chuàng)建一個示例,從您可以對文檔執(zhí)行的兩項主要操作開始,將其打開并保存。

我這里做一個簡單的演示

還是先定義合并單元格函數(shù),以便后續(xù)多次調(diào)用。由于處理Word中表格的代碼與處理Excel不同,所以函數(shù)也要做微調(diào)。主要變化就是合并的函數(shù)表達,對于word中的表格,表達式是table.cell(row1,col1).merge(table.cell(row2,col2)),意思是將第row1行col1列到row2行col2列之間的表格合并(row2,col2要分別大于等于row1和col1)。需要注意的是cell(0,0)表示第一行第一列的單元格,以此類推。如下函數(shù)是在例28的基礎(chǔ)上修改的。

#定義合并單元格的函數(shù)    
def Merge_cells(table,target_list,start_row,col):
    '''
    table: 是需要操作的表格
    target_list: 是目標列表,即含有重復(fù)數(shù)據(jù)的列表
    start_row: 是開始行,即表格中開始比對數(shù)據(jù)的行(需要將標題除開)
    col: 是需要處理數(shù)據(jù)的列
    '''
    start = 0 #開始行計數(shù)
    end = 0 #結(jié)束行計數(shù)
    reference = target_list[0] #設(shè)定基準,以列表中的第一個字符串開始
    for i in range(len(target_list)): #遍歷列表
        if target_list[i] != reference: #開始比對,如果內(nèi)容不同執(zhí)行如下
            reference = target_list[i] #基準變成列表中下一個字符串
            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中相應(yīng)表格里的數(shù)據(jù),并提取出來,以便作為是否合并的判斷基礎(chǔ)。使用Document打開word文檔,先查看一下其中表格的個數(shù),以便我們鎖定要處理的表格。由于word里面可能有隱藏表格,或者一個表格中有一段去掉了邊框,讓人看起來像是兩個表格,直接在word中去數(shù)表格個數(shù)有時會不靠譜。通過len(doc.tables)看到,這個文檔里面有2個表格。打開word文檔,我們可以看到要處理的表格是第一個,即doc.tables[0]。如果情況較為復(fù)雜,我們可以打印表格中第一行單元格的內(nèi)容進一步確認是否是我們需要處理的表格。確認好表格的序號后,就可以開始讀取內(nèi)容了。

from docx import Document
doc = Document("收貨記錄.docx")
print("這個工作表有 {} 個表格。\n".format(len(doc.tables))) #查看表格中的個數(shù),以便鎖定我們要處理的表格

print("第一個表格的第一行的單元格中的內(nèi)容如下:")
for i in doc.tables[0].rows[0].cells: #讀取第一個表格的第一行的單元格中的內(nèi)容
    print(i.text)


第一個表格的第一行的單元格中的內(nèi)容如下:
序號
供應(yīng)商名稱
貨物編碼
貨物型號
貨物說明
數(shù)量
日期

表格:

doc.tables[0].rows[0].cells[0].text
'序號'

接著:

#讀取word文檔中的第一個表格的第二和第三列除標題和尾部總數(shù)行的數(shù)據(jù)
doc = Document("收貨記錄.docx")
table = doc.tables[0] #已確定是第一個表格,其索引是0
supplier = [] #存儲供應(yīng)商名稱
pn = [] #存儲物料編碼
max_row = len(table.rows) #獲取第最大一行
print("表格共有{}行".format(max_row))

#讀取第二行到29行,第2,3列中的數(shù)據(jù)
for i in range(1,max_row-1):
    supplier_name = table.rows[i].cells[1].text #cells[1]指表格第二列
    supplier.append(supplier_name)
    
    material_pn = table.rows[i].cells[2].text #cells[2]指表格第三列
    pn.append(material_pn)
print("獲取到{}個供應(yīng)商名稱,{}個物料編碼。".format(len(supplier),len(pn)))
表格共有30行
獲取到28個供應(yīng)商名稱,28個物料編碼。
Merge_cells(table,supplier,1,1) #開始合并行為2,索引為1;供應(yīng)商名稱是在2列,索引為1
Merge_cells(table,pn,1,2) #開始合并行為2,索引為1;物料編碼是在3列,索引為2
doc.save("檢查.docx")

到這一步,合并單元格算是完成了,但結(jié)果如下圖所示,原單元格中的內(nèi)容全部集中在一起,造成了重復(fù)內(nèi)容。我們需要重寫這些單元格以覆蓋掉重復(fù)的內(nèi)容,即可得到我們想要的結(jié)果。

結(jié)果:

細節(jié)介紹

關(guān)于python-docx
鏈接:傳送門
這里有關(guān)于操作的詳細介紹

到此這篇關(guān)于Python批量對word文檔進行操作的文章就介紹到這了,更多相關(guān)python批量word文檔操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 定義函數(shù) 返回值只取其中一個的實現(xiàn)

    python 定義函數(shù) 返回值只取其中一個的實現(xiàn)

    這篇文章主要介紹了python 定義函數(shù) 返回值只取其中一個的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python+pandas分析nginx日志的實例

    python+pandas分析nginx日志的實例

    下面小編就為大家分享一篇python+pandas分析nginx日志的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python Tkinter Entry和Text的添加與使用詳解

    Python Tkinter Entry和Text的添加與使用詳解

    這篇文章主要介紹了Python Tkinter Entry和Text的添加與使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 一文教會你用nginx+uwsgi部署自己的django項目

    一文教會你用nginx+uwsgi部署自己的django項目

    uWSGI是一個Web服務(wù)器,它實現(xiàn)了WSGI協(xié)議、uwsgi、http等協(xié)議,下面這篇文章主要給大家介紹了關(guān)于用nginx+uwsgi部署自己的django項目的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • python如何使用jt400.jar包代碼實例

    python如何使用jt400.jar包代碼實例

    這篇文章主要介紹了python如何使用jt400.jar包代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Django admin實現(xiàn)TextField字段changelist頁面換行、空格正常顯示

    Django admin實現(xiàn)TextField字段changelist頁面換行、空格正常顯示

    本文主要介紹了Django admin實現(xiàn)TextField字段changelist頁面換行、空格正常顯示,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Python qqbot 實現(xiàn)qq機器人的示例代碼

    Python qqbot 實現(xiàn)qq機器人的示例代碼

    這篇文章主要介紹了Python qqbot 實現(xiàn)qq機器人的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python pandas.DataFrame.loc函數(shù)使用詳解

    python pandas.DataFrame.loc函數(shù)使用詳解

    這篇文章主要介紹了python pandas.DataFrame.loc函數(shù)使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • python實現(xiàn)五子棋游戲

    python實現(xiàn)五子棋游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)五子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python?Rich增加終端顯示視覺效果

    Python?Rich增加終端顯示視覺效果

    Python開發(fā)中,命令行界面(CLI)經(jīng)常被用于交互和數(shù)據(jù)展示,雖然命令行界面通常被視為簡單、枯燥的文本顯示區(qū)域,通過Python的Rich庫,為命令行界面帶來更多生機和視覺吸引力,本文帶大家探索Rich功能強大的Python庫,增強終端文本渲染,使輸出更具有吸引力和可讀性
    2024-01-01

最新評論

五台县| 丹东市| 麻江县| 东阿县| 洛南县| 永定县| 滕州市| 连平县| 自贡市| 琼海市| 乌恰县| 麦盖提县| 张掖市| 历史| 张掖市| 安多县| 胶州市| 涡阳县| 惠安县| 达孜县| 青海省| 华蓥市| 唐山市| 永寿县| 三亚市| 方正县| 雅江县| 泽州县| 宜兴市| 长沙县| 东兰县| 满洲里市| 凤山市| 灯塔市| 公主岭市| 林州市| 龙川县| 勐海县| 盐津县| 玉门市| 上思县|