python-docx添加和刪除表格行、列

2021-01-11 小梁學編程

在WORD中通過滑鼠右鍵菜單「插入」按鈕中的功能可以實現表格行列的添加,也可以通過「刪除單元格」按鈕中的刪除單元格的功能實現表格行列的刪除;當然還可以通過「布局」菜單中的刪除和添加功能實現。

滑鼠右鍵插入按鈕
滑鼠右鍵刪除單元格按鈕
刪除單元格功能圖
在布局菜單上刪除和添加表格行列

而在python-docx包中怎麼實現表格行和列的添加和刪除?筆者總結了add_column()函數、add_row()函數和remove()函數的用法,分別從如下3個部分進行說明,並將本文的主要內容製作了思維導圖。

01表格中添加行、列

默認位置添加

在表格中使用add_column(width)和add_row()可以實現對行和列的添加,其中add_row方法沒有參數,而add_column方法必須知道表格中的寬度,寬度可以使用單位換算如Cm ,Inches等。添加代碼如下:

from docx import Documentfrom docx.shared import Cmdocument = Document('test.docx') # 打開文檔print('test.docx表格總數:', len(document.tables))table = document.tables[1] # 獲取第二個表格對象print('表格2的行列數:', len(table.rows), len(table.columns)) # 列印表格的行列數table.add_row() # 為表格最底部增加一行table.add_column(Cm(3)) # 為表格最右側增加一列print('添加行列後表格2的行列數:', len(table.rows), len(table.columns))document.save('test2.docx') # 保存文檔添加行、列後運行結果見下圖:

添加行、列後運行結果圖

輸出的文檔結果見下圖

表格中add_row()函數默認添加在表格的底部,而add_column()函數默認添加到列最右側。

02表格行、列的定位

在python-docx中表格中行或者列的定位主要通過

table.rows和table.columns兩個屬性獲取行和列的的總對象,然後使用索引獲取指定的行或者列對象。獲取表格中的第2行和第2列代碼如下:

row = table.rows[1]column = table.columns[1]

表格、行、單元格的關係

在表格中雖然單元格可以從column中的cells中來遍歷,但是單元格是按行存儲的,這點將在刪除列的部分重點說明。

03刪除表格中的行、列

刪除表格中的行

表格中行的刪除可以使用row._element.getparent().remove()函數來實現。具體步驟是,首先獲取表格中的行對象,然後使用remove()函數進行刪除。刪除test.docx中表格2中的第2行,代碼如下:

document = Document('test.docx') # 打開docx文檔print('test.docx表格總數:', len(document.tables)) # 列印表格總數table = document.tables[1] # 獲取第二個表格對象,用於刪除表格中的行print('表格2的行列數:', len(table.rows), len(table.columns)) # 列印表格的行列數,刪除表格行前row = table.rows[1] # 獲取表格2中第二行row._element.getparent().remove(row._element) # 刪除表格中的第二行print('刪除表格中第2行後的表格行列數:', len(table.rows), len(table.columns))運行結果如下圖:

刪除表格中的第2行的運行結果

刪除第2行後表格的效果如下圖:

刪除第2行後的運行效果圖

刪除表格中的列

列的刪除則不能像刪除行那樣使用對應的remove()函數,因為在_Column中沒有定義_element,但可以採用單元格進行刪除。代碼如下:

document = Document('test.docx') # 打開docx文檔,用於刪除表格列print('test.docx表格總數:', len(document.tables)) # 列印docx文件中表格總數table = document.tables[1] # 獲取第二個表格對象,用於刪除表格中的列print('表格2的行列數:', len(table.rows), len(table.columns)) # 列印表格2的行列數column = table.columns[1] # 獲取表格2中第2列for cell in column.cells: # 遍歷列中單元格 cell._element.getparent().remove(cell._element) # 刪除第2列的單元格print('刪除第2列後的表格行列數:', len(table.rows), len(table.columns))document.save('test2.docx') # 保存文檔,刪除列後刪除表格第2列後運行結果如下圖:

刪除表格2中的第二列運行結果

刪除第2列後表格見下圖

刪除表格2中的第二列WORD文檔效果圖

通過cell的remove()方法可以刪除表格的列,但是由於表格中的cell是按行存儲,每行存儲的cell的數量並沒有變化,所以當刪除單元格後,後續的單元格會補上。那麼此時表格的存儲形式將不是WORD文檔表現出的效果,讀取test2.docx中的表格2代碼如下:

document = Document('test2.docx') # 打開文檔table = document.tables[1] # 獲取第二個表格對象,用於讀取單元格內容i = 0 # 標識行的序號for row in table.rows: # 讀取表格中的行 i = i + 1 # 行的序號從1開始 for cell in row.cells: # 讀取行中的單元格 print('第' + str(i)+'行:', cell.text) # 列印單元格中的內容運行結果入下圖

表格內單元格的遍歷

表格仍然按照每行3個元素存儲,表格仍然是3行3列,但第3行是空行。筆者從表格行列的添加、定位和刪除等3個部分總結了python-docx包中對WORD文檔表格行列的操作並製作了思維導圖見下圖,希望為使用python-docx包對表格行列操作有需求的人提供參考,本文中如有不妥之處,請在評論中指出。

python-docx添加表格行和列

相關焦點

  • python-docx設置表格對齊方式
    ,筆者總結了python-docx包中表格和單元格等2種設置對齊方式,並在文章最後將文章主要內容製作了思維導圖。python-docx包定義了表格對齊的枚舉類型,存儲在docx.enum.table import WD_TABLE_ALIGNMENT中,共定義了LEFT、CENTER和RIGHT三個常量。
  • 【他山之石】Python和Excel終於可以互通了,自動化辦公實操寶典速來下載!
    例如我想要獲取第2行至第5行、第1列至第3列的全部單元格。插入一列或多列7.刪除多行8.刪除多列9. 移動範圍數據10.③ 在python中使用excel函數公式(很有用)④ .insert_cols()和.insert_rows():插入空行和空列⑤ .delete_rows()和.delete_cols():刪除行和列⑦ .create_sheet():創建新的sheet表格⑨ .copy_worksheet():複製一個sheet表到另外一張excel表⑩ sheet.title:修改sheet
  • python-docx設置圖片大小和對齊方式
    在WORD軟體中,圖片大小一般可以採用點擊圖片,在「格式」菜單中「大小」裡設置圖片的高度和寬度,也可以通過滑鼠右鍵菜單「大小」菜單調出設置圖片大小的界面,見下圖。而在python-docx包中主要使用inline_shape對象的height和width屬性設置,筆記將分圖像大小設置和圖片對齊方式設置等2個方面進行敘述並製作了思維導圖。
  • 聊聊python 辦公自動化之 Word(中)
    基本信息我們同樣使用 python-docx 這個依賴庫來對 Word 文檔進行讀取。首先我們來讀取文檔的基本信息,它們分別是:章節、頁邊距、頁眉頁腳邊距、頁面寬高、頁面方向等。在獲取文檔基礎信息之前,我們通過文檔路徑構建一個文檔對象 Document。
  • python-docx設置中文字體
    在python-docx包中對WORD文檔字體的設置要使用font類,只需要更改font.name屬性就可以了。然而,對於中文字體的設置遠不是這麼簡單。_element.rPr.rFonts.set(qn('w:eastAsia'), u'宋體') # 將段落中的所有字體paragraph1 = document.add_paragraph() # 添加一個段落run = paragraph1.add_run(u'aBCDefg這是中文')
  • python-docx頁面設置
    而在Python-docx包中要使用section對象中page_height、page_width、orientation、top_margin等屬性來實現對頁面大小,紙張,方向,頁邊距和裝訂線的設置。筆者將詳細敘述使用python-docx包中對docx文檔頁面設置功能的實現,最後製作了思維導圖。
  • Python輕鬆實現PDF格式轉換(附詳細源碼)
    pdfplumber 可以很好的讀取 PDF 文件內容和提取 PDF 中的表格,這個庫不屬於 Python 標準庫,需要單獨安裝。安裝好了之後,咱導入pdfplumber。打開PDF論文,並提取論文第2頁面內容。
  • 文職美女上班手動用Excel表格太麻煩,當學會python後easy操作
    通過程序操作excel表格是編程中比較常見的操作,python本身不能直接操作excel,需要安裝第三方的模塊來實現excel的操作。Python中可以操作excel模塊主要有:1、xlrd 模塊實現exlcel表格讀取2、xlwd 模塊實現excel表格創建和寫入3、pandas模塊也可以實現excel常規操作
  • 使用HTML添加表格4(行顏色與表格嵌套)——零基礎自學網頁製作
    行顏色設置的簡便方法昨天我們在《使用HTML添加表格3(間距與顏色)——零基礎自學網頁製作》中學習了設置單元格以及其中內容的空間間距和背景顏色。其中添加列向單元格背景顏色只需要修改對應的<tr>標籤中的style屬性,而修改行向標籤需要修改不同<tr></tr>標籤中的<td>標籤的style屬性,這樣操作起來就非常的麻煩,那有沒有簡便的修改行向單元格背景顏色的方法呢?當然有!
  • 用ExcelPython在Excel中調用Python
    能夠實現從Excel中調用python,得益於Excel擁有龐大收集能力的庫和強大的語言能力。ExcelPython 是一款處理性的COM庫,它能讓你加載python模塊,調用程序和運行函數。另外一些Excel/Python接口工具,例如PyXLL和Python-Excel,它們同樣都是很優秀的工具,只是與ExcelPython在功能上和適用性上有些微差別。
  • 1 行 Python 代碼幹了妹子一天的工作
    ,驚的朋友直呼python牛批下面個大家詳細介紹一下整個過程1.正確讀取表格首先按照傳統的方式讀表格:import pandas as pddata1 = pd.read_excel('高中生數量.xlsx'
  • 太強了,1行python代碼幹了妹子一天的工作
    於是我馬上想到了pandas,想著這麼強大的函數肯定有這個功能,於是我開始翻閱資料,沒想到還真找到了,而且僅用三行代碼就搞定了,驚的朋友直呼python牛批這樣就正常讀取並識別表格了2.重置索引這一步主要是將索引列重置,變為普通列,便於下步,代碼如下
  • Excel表格刪除行後怎麼讓序號自動排序
    在工作中經常要編輯excel表格,記錄也很多,一般都會設置「序號」列,以方便查看及排序。2. Excel初學者可能是逐個輸入1,2,3……,或者使用填充功能向下自動填充,但是如果數據多的話,在修改數據,刪除某些行後,序號需要重新編輯或填充。3.
  • Word用快捷鍵插入刪除、拆分、選中整個表格與上下移動行及光標
    在 Word 中,表格的許多操作都可以用快捷鍵;對整個表格來說,插入、刪除、選中和拆分都可以用快捷鍵;對行列來說,插入、刪除、移動光標、平均分布也都可以用快捷鍵,並且行還可以用快捷上下移動;單元格的拆分與合併同樣可以用快捷鍵。行列的插入與刪除,單元格的拆分與合併,在前面的篇章都已經介紹過,本篇繼續介紹剩餘的內容作為表格快捷鍵的收尾篇。
  • word表格標題行重複出現怎麼做
    在工作中,編輯的word文檔經常要有記錄列很多的表格,少則2頁,多則好幾頁,表格記錄列一多,在閱讀上就會有些麻煩,比如下圖這樣的表格,各列數字比較多,又比較相近的。2. 特別是跨好幾頁的記錄時,在查看下一頁時,可能就不知道哪列代表什麼意思了。3.
  • 真實案例引發的思考,如何分組統計電子表格數據,Python輕鬆搞定
    今天,有網友留言說要統計一個Excel表格中的數據。需求是這樣的:示例Excel表格有上面這樣一張Excel表格,記錄了很多個城市(代碼表示)的數據,這些數據都是布爾類型的,即要麼是0,要麼是1。打開Excel文件,跳過標題行並遍歷之後的每一行,如果某一城市(每一行第二列內容)第一次出現,則添加到我們的字典中,類似這樣:{城市:{'0':0, '1':0}}。
  • 210809:Python.Pandas.DataFrame.基礎操作.1
    指定多行:df.loc[["行名1","行名2","行名3"]]此時切片左閉右開,和正常的列表切片相同了。即左邊包含,右邊不包含。經過測試,此方法列參數不能用索引號,行參數可名可號。6.at訪問指定元素。此方式不能訪問整行整列,直接定位到某個元素。
  • 別再問我Python打包成exe了!(終極版)
    這篇的python代碼,作為案例來演示。-w是指程序啟動的時候不會打開命令行。如果不加-w的參數,就會有黑洞洞的控制臺窗口出來。比如在剛才的腳本裡我加一行print('Hello World!'),那麼就不要放-w參數了,不然運行會報錯,畢竟Hello World!需要在命令行裡列印出來。此外,-w參數在GUI界面時非常有用。
  • 快速介紹Python數據分析庫pandas的基礎知識和代碼示例
    我們可以通過df[:10].tocsv()保存前10行。我們還可以使用df.to_excel()保存和寫入一個DataFrame到Excel文件或Excel文件中的一個特定表格。df.tail(3) # Last 3 rows of the DataFrame添加或插入行要向DataFrame追加或添加一行,我們將新行創建為Series並使用append()方法。
  • 這些給表格添加邊框線的方法,你用過幾種?怕是自動添加沒用過吧
    我們在日常工作中,使用Excel製作表格的,最後都要加上邊框,列印時才會達到表格的要求,今天小編教大家快速給表格添加邊框的方法,有一種是自動添加喲!>方法二:利用設置單元格格式功能,這種方法可以選擇框線的顏色和粗細等,起到美化表格作用,操作如下:1、選中需要添加邊框的單元格區域B2:H10,按Ctrl+1鍵調出設置單元格格式對話框;2、在設置單元格格式窗口中選擇【邊框】頁面,可以選擇直線樣式、顏色等,這裡我們先選擇一個較粗線條