Python利用openpyxl處理Excel文件(單元格及行列具體操作)

2020-11-21 python高手養成

前面章節主要梳理學習了openpyxl的基本操作及單元格樣式設置等相關內容,另外也穿插講解了部分單元格行列操作的知識點。通過實戰項目演示,進一步加深了印象,整個過程我們不難發現,對於使用openpyxl操作Excel文件,行列遍歷及單元格的定位操作是整個過程的重要技巧和先決條件,因此,這節我們著重講解openpyxl對於單元格及行列遍歷的具體操作。

一、單元格及行列操作相關方法

from openpyxl import load_workbook

wb = load_workbook(「test.xlsx」)

ws = wb[wb.sheetnames[0]]

創建了worksheet工作表實例

用ws表示工作表實例,後面不再說明。

(一)獲取單元格

總結獲取單元格有兩種方式:

1.ws[行列名] # 列名使用英文字母

2.ws.cell(row, column) # 列名使用數字

列字母數字轉化函數

col_number = openpyxl.utils.column_index_from_string(char)

col_char = openpyxl.utils.get_column_letter(number)

工作表列字母數字轉化演示

(二)設置單元格的大小(行高和列寬)

# 調整列寬

ws.column_dismensions[『A』].width = 40.0

# 調整行高

ws.row_dismensions[1].height = 60.0

wb.save(「test.xlsx」)

(三)合併\取消合併單元格

ws.merge_cells(「A1:A2」)

ws.cell(1, 1).value = 「合併單元格內容」

ws.unmerge_cells(「A1:D1」)

# 注意設置樣式時只設置左上角單元格的樣式即可

from openpyxl.styles import Font, Alignment

font = Font(name=u』宋體』, size=28, bold = True)

align = Alignment(horizontal=』center』, vertical=』center』)

合併單元格並設置單元格樣式

(四)插入行列

ws.insert_rows(n) # 在第n行插入一行

ws.insert_cols(m,n) # 從第m列開始插入n列

(五)刪除行列

ws.delete_cols(m, n) # 從第m列開始,刪除n列

ws.delete_rows(n) # 刪除第n行

上述兩種方式刪除行(列)後,下(後)面的表格將自動上(前)移

(六)行列遍歷

處理Excel表格有時(大多數)需要對表格進行遍歷查找,行列遍歷兩種方式:

1.ws.max_row獲得表格的最大行數,取得遍歷次數,使用for循環遍歷

for row in range(2, ws.max_row + 1):

# 一般第一行是表頭,所以從2開始,range()不含右邊界

for cell in row:

print(cell)

2. openpyxl中提供了行列生成器(ws.rows和ws.columns),這兩個生成器裡面存儲了每一行(列)的數據,每一行由一個tuple包裹,便於對行列進行遍。

for row in ws.rows:

for cell in row:

print(cell)

由於ws.rows或ws.columns是生成器類型,不能直接調用,使用時往往將其轉化未list類型,然後索引遍歷獲得某一行(列)的內容

for cell in list(ws.rows)[0]:

print(cell.value)

上面例子列印第一行的內容

此外,還可以使用sheet[行列值: 行列值]來對給定單元格範圍進行遍歷。

for area_date in sheet[『A1』:』H8』]:

for cell in area_date:

print(cell.value)

上面的例子列印A1到H8範圍內的內容

二、綜合實例

我們通過一個實例來回顧下上面的知識點和前面章節的樣式內容。接前幾章的例子,Excel電子表格中創建一個100×100的乘法表,命名為「漂亮的電子表格」,設置背景色為紅色,單元格加上邊框,單元格內容居中顯示,單元格字體設置為「Times New Roman」,大小8,白色。對表格的行列作出如下設置:單數行藍色填充、雙數行黃色填充、行列相等的單元格藍色填充、內容是3的倍數的單元格用紅色填充。在第一行加上標題,題目為「乘法表」,合併單元格使標題居中顯示,標題應用樣式字體「宋體」,大小22,加粗顯示。

不贅述,直接上代碼。

import openpyxl

from openpyxl.styles import PatternFill, Alignment, Border, Side, Font

from openpyxl.styles.colors import RED, BLUE, YELLOW, GREEN, BLACK, WHITE

wb = openpyxl.Workbook()

ws = wb.active

ws.title = "漂亮的電子表格"

ws.sheet_properties.tabColor = RED

font = Font(name="Times New Roman", size=8, color=WHITE)

alignment=Alignment(horizontal='center', vertical='center')

thin = Side(border_style="thin", color=BLACK)

border = Border(top=thin, left=thin, right=thin, bottom=thin)

# 單數行

r_single_fill = PatternFill(fill_type='solid',fgColor=BLUE)

# 雙數行

r_double_fill = PatternFill(fill_type='solid',fgColor=YELLOW)

# 行列相等

r_c_fill = PatternFill(fill_type="solid",fgColor=GREEN)

# 3的倍數

three_fill = PatternFill(fill_type="solid",fgColor=RED)

for r in range(1, 101):

for c in range(1, 101):

cell = ws.cell(row = r, column = c, value = r * c)

cell.font = font

cell.alignment = alignment

cell.border = border

if cell.row % 2 != 0:

cell.fill = r_single_fill

elif cell.row % 2 == 0:

cell.fill = r_double_fill

if cell.row == cell.column:

cell.fill = r_c_fill

if cell.value % 3 == 0:

cell.fill = three_fill

wb.save("test.xlsx")

程序運行結果展示:漂亮的Excel表格

三、總結展望

怎麼樣,電子表格五顏六色,只有你想不到,沒有python+openpyxl做不到的,因此,只要熟練掌握單元格和行列的操作,你就能定位到任何Excel電子表的位置,然後進行各種設置和統計,是不是很方便?但前提是要熟練掌握哦!

可愛的python

如果我想列印電子表格呢?電子表格頁面如何設置?我們下一章節梳理探討這些問題。

相關焦點

  • Python利用openpyxl處理excel文件(openpyxl的安裝及簡介)
    但是試想,如果把上述excel公式變成諸如python中的if-else結構,其可讀性肯定是不容置疑的……今天,我們來介紹一款excel處理利器—openpyxl(python庫文件)。根據openpyxl官方文檔,結合個人近年來使用心得,總結openpyxl應用中以下幾個知識點:(一)openpyxl的安裝、導入及相關注意事項;(二)對excel文件的打開、讀寫、編輯、保存相關;(三)對excel文件中樣式的編輯;(四)對excel文件中單元格及行列的操作;(五)在excel文件中公式及圖表的簡單操作
  • Python操作Excel文檔
    1. xlrd用於讀取excel文件book.sheet_by_name('sheetName') # sheetName表示獲取根據sheet頁名字獲取sheet頁面數據 sheet.ncols # 獲取sheet頁面有多少行 sheet.nrows # 獲取sheet頁面有多少列 sheet.cell(row,col).value # 獲取某單元格的內容
  • 使用pandas和openpyxl處理複雜Excel數據
    問題緣起pandas read_excel函數在讀取Excel工作表方面做得很好。但是,如果數據不是從頭開始,不是從單元格A1開始的連續表格,則結果會不是很好。,可以處理Excel文件的實際混亂情況。關於read_exce函數更多參數可以查看官方文檔,下面是一個總結表格:結合openpyxl在某些情況下,數據甚至可能在Excel中變得更加。在下面示例中,我們有一個ship_cost要讀取的表。如果必須使用這樣的文件,那麼只用pandas函數和選項也很難做到。
  • 程式設計師如何 10 分鐘用 Python 畫出蒙娜麗莎?
    基本思路實現這個需求的基本思路是讀取這張圖片每一個像素的色彩值,然後給excel裡的每一個單元格填充上顏色。所以主要用到的是PIL、openpyxl這兩個庫。使用openpyxl幾乎是Python裡功能最全的操作excel文件的庫了,這裡也只需要用到它的一小部分功能。
  • 從Excel中解救你!如何用Python實現報表自動化
    Excel任務」( https://towardsdatascience.com/automate-these-3-boring-excel-tasks-with-python-666b4ded101b)一文中涵蓋了許多關於Openpyxl的內容,對其如何運行提供了詳細介紹。
  • Python數據分析:pandas讀取和寫入數據
    繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。平時工作中,我們會接觸到不同的數據文件,比如很常見的excel文件(後綴名為xls和xlsx),csv、txt等文本文件,json文件以及sql文件等等。
  • 懂Excel就能輕鬆入門Python數據分析包pandas(十六):合併數據
    隨著需求複雜度提高,很多時候已經不能用 excel 自帶功能實現了,不過 pandas 中許多概念與 excel 不謀而合案例1公司的銷售系統功能不全,導出數據時只能把各個部門獨立一個Excel文件,此時你需要對整體數據做分析,最好的方式當然是先把各個文件統一匯總起來:注意看,雖然每個表的標題一樣,但是他們的順序可能出現不一致這裡有3個關鍵點:
  • Excel合併單元格的三種統計方法
    營長說昨天在微信群中,有夥伴諮詢,如何對有合併單元格的表格進行匯總求和。今天營長將Excel中合併單元格常見的三種處理方法介紹給你。先看下具體的數據表格,這種合併單元格比較常見。今天介紹用公式實現添加序號、匯總求和以及透視匯總三種方法。
  • Excel 鎖定單元格、指定行列及有公式的單元格使格式與內容不能改
    然後,單用鎖定單元格不能實現鎖定,還必須啟用保護工作表功能,啟用時可以設置密碼和允許修改的項。以下就是 Excel 鎖定單元格的具體操作實例,操作中所用 Excel 版本為 2016。」;然後,單擊「開始」選項卡下的「格式」,在彈出的選項中選擇「保護工作表」,單擊「確定」,則 B2 單元格被鎖定,此時,雙擊 B2 會彈出一個提示窗口提示 B2 已經被保護而不能修改,再雙擊其它單元格,則還可以修改;操作過程步驟,如圖1所示:2、說明:在默認情況下,Excel 給所有單元格勾選「鎖定」,所以鎖定一個單元格前需要把所有單元格取消勾選「鎖定」,然後再鎖定要鎖定的單元格,最後開啟
  • 普通人學Python有意義嗎?學Python有前途嗎?-開課吧Python
    Pythonpython憑藉著第三方庫數量的龐大,其幾乎可以說是萬能的,對於普通人來說,數據表格excel基本上都有需要製作,而有一些編程基礎的,就可以使用庫openpyxl來實現excel表格的自動處理和生成,同時除了excel之外,針對word,ppt等python都有對應的庫。
  • excel統計求和:如何在合併後的單元格中複製求和公式
    試問:使用何種方法,才可以一鍵實現合併單元格的快速求和?對於合併單元格求和,相信大多數人的做法都會是:分別選中每一個合併單元格對應的數據區域,然後用SUM函數依次求和。操作見動圖。這種方法,適用於對數量較少的合併單元格進行求和,如果合併單元格的數量在10個以內,是完全可以採用此方法的。但是若合併單元格的數據量很大,遠遠超過我們手動的可操作範圍,或者在時間很緊急的情況下,沒有時間進行手動操作時,這種方法顯然就不適用了。
  • Excel拆分單元格與把一個單元格內容拆分到多個單元格
    在 Word 中,可以把一個單元格拆分為多個單元格甚至拆分為一個表格;而Excel拆分單元格與Word不同,在Excel中,只能把合併後的單元格拆分。拆分方法有兩種,一種是用「對齊方式」中的選項拆分,另一種在「設置單元格格式」窗口中拆分。
  • Excel一個單元格乘以另一個合併單元格,合併單元格的乘積怎麼算
    合併單元格的乘積與合併單元格的求和同出一轍,它們在日常工作中時常遇到,如何一次性解決合併單元格的乘積問題,能極大地提高工作效率。在處理Excel各項問題時,我們首先要傾向於使用簡單的各項操作來嘗試,如果這些操作不能有效解決或相對複雜,便馬上考慮通過函數公式的方法來解答。
  • excel同一單元格內求積-不是公式函數能解決的問題
    excel同一單元格內求積,這個方法不能直接用公式函數,但是也有方法做成。先聽我吟詩一首,放鬆一下如何:辦公教程又一篇,你要耐心地看完;看完發現並不難,收藏分享加點讚。看完發現並不難,收藏分享加點讚。方法如下:1、找到【公式】下面的自定義名稱,(需要用這一個方法來實現)2、在彈出的新建名稱窗口中,名稱改為:乘,引用位置改為:=EVALUATE(A5),您哪個單元格設置成求積項,就把單元格設置哪個,您看A5單元格內容是【2*3】如下圖設置3、在單元格中輸入【=乘】,點確定後就計算出了結果=EVALUATE(A5)的解釋:
  • excel隨機數函數是什麼?excel怎樣生成隨機數?
    本篇將介紹excel隨機數函數是什麼?excel怎樣生成隨機數?有興趣的朋友可以了解一下!一、前言excel是我們工作中很常用的一款表格製作工具,它不僅僅只是用來製作表格,它還能對表格中的數據進行處理(比如:運算、排序、篩選等)。excel為數據的處理提供了很多函數,今天小編要介紹的是excel隨機數函數,以及隨機數函數的用法,希望對大家有所幫助!
  • 單元格的比較並高亮顯示比較結果
    第十三節 單元格的比較並高亮顯示比較結果大家好,這講內容是單元格對象內容的最後一節,我們講解一個實例:就是利用單元格的屬性完成單元格的比較,並高亮顯示比較的結果。這講的內容作為單元格相關屬性的一個綜合運用,讓大家進一步理解單元格對象的知識。
  • Excel追蹤引用單元格與從屬單元格,含用快捷鍵跨工作薄追蹤
    追蹤引用單元格與從屬單元格分為兩種情況,一種是在當前工作簿追蹤,另一種是跨工作簿追蹤。以下是 Excel追蹤引用單元格與追蹤從屬單元格的具體操作方法,含用快捷鍵跨工作薄追蹤實例,實例操作所用版本均為 Excel 2016。
  • Excel單元格左上角的綠色小三角是什麼?
    最近有粉絲問到在Excel單元格左上角的綠色小三角是幹什麼用的,讓我的表格顯示非常零亂,怎麼清除呢?其實這是Excel智能提醒單元格中的錯誤,如果你輸入的公式或內容沒有錯誤可以忽略它。今天小編就和大家分享如何清除這個綠色小三角。
  • 編程界新晉「網紅」Python到底是什麼?學Python真的有用嗎?
    舉例:「文件批量重命名」,我們來拆解一下手動完成這個任務需要的步驟。但我們仔細觀察這些步驟便可以發現這個任務總共就一個處理邏輯:對於文件夾中的每一個圖片,如果照片的拍攝時間順序等於表格裡的拍照順序,那麼就將圖片重命名為那一行拍攝順序表格中的(部門+姓名)信息。
  • excel指數函數是什麼?怎麼求一個數的n次方?
    本篇將介紹excel指數函數是什麼?怎麼求一個數的n次方?有興趣的朋友可以了解一下!一、前言excel是我們工作中經常使用的一款表格製作工具,它不僅僅只是用來製作表格,而在表格數據的處理方面也顯得非常突出。excel為我們提供了很多函數,對於一些常用簡單的函數我們應該要了解,這能大大提高我們的工作效率。