Python最詳細的Excel操作方式,


什么要學會使用Excel
在機器學習模型的建立中,不得不借助於Excel強大的統計分析能力,這個時候就牽涉到了如何將python直接處理得到的數據存入excel表格當中以及獲取表格的數據進行分析,簡單的說,學會使用Python操作Excel文件后,可以運用到機器學習之中,也可以讓平常生活中繁瑣的工作自動化處理。

Excel的基本使用
Python處理Excel的包是openpyxl,如果你是直接下載的anaconda安裝的Python庫,那么下載的時候,自帶的就已經安裝了openpyxl,如果不是,也可以直接在cmd之中,使用pip install openpyxl安裝。

安裝完成之后,我們應該了解一下Excel的組成部分,如下圖所示:

 

看到上圖就應該知道,首先,我們應該獲取Excel文件:

wb=openpyxl.load_workbook('1234.xlsx')
對於已經有Excel目標文件來說,使用以上方法,就可以直接獲取excel文件,如果你想重新創建一個全新的Excel文件,不妨試試以下方式:

wb=openpyxl.Workbook()
已經獲取了Excel,但其實我們的數據都在一個一個的表中,如下圖所示:

 

一個Excel文件中可以有多個表,一般而言操作的都是第一個表,而獲取表的方法也有很多,比如:

sheet=wb.worksheets[0]

sheet=wb['吸入類']
以上兩種方式都是獲取第一個表,要是我們使用wb=openpyxl.Workbook()方式,新創建的一個Excel呢?我們需要創建一個操作的表格:

wb.create_sheet(index=0,title='小豬')

wb.create_sheet(index=1,title='佩奇')
當我們獲取表格之后,就可以快樂的操作我們的數據了。

比如這個時候,你想獲取表格中的A1單元格中的文本,就可以使用如下方法:

sheet['A1'].value
以上是獲取單個單元格的數據,現在我有一個需求,要遍歷某個表格中的所有數據,該怎么操作呢?這里我們先假如我有如下表格:

 

那么遍歷起來的代碼如下:

import openpyxl

wb=openpyxl.load_workbook('1234.xlsx')
sheet=wb.worksheets[0]
for row in sheet.iter_rows():
for cell in row:
print(cell.coordinate, cell.value)
上面是逐行遍歷,首先我們獲取Excel文件,然后獲取當中的第一個表格,然后通過獲取行數,以及列數進行遍歷,openpyxl獲取行數的方法為sheet.iter_rows(),獲取列數可以直接通過當前行獲取也就是for cell in row,代碼簡潔明了,實現效果如下:

 

那么怎么修改數據呢?我們先來看看代碼:

sheet['A1'].value='1111111'
sheet.cell(1,1).value='1111111'
sheet.cell(1,1,'111111')
這三種方式,都可以修改Excel某個單元格數據,同時也可以通過前兩種方式獲取到這個單元格的值,python的優點就是這么簡單明了。

經過這些操作之后,我們還有一個事情要做,那就是如果保存我們創建,或者修改過后的Excel,其實也很簡單,一句話就可以做到,代碼如下:

wb.save('1234.xlsx')
這樣就將操作的數據,保存到當前目錄之下的1234.xlsx中,同樣寫絕對路徑也行。

Excel的樣式
在平常的生活當中,Excel表格並不僅僅是寫入數據,修改數據,保存數據這樣簡單的操作,其實還有如果讓Excel變的更加美觀,比如修改某些字體,邊框樣式等等等等。

字體樣式
那好,我們先來說說如何修改字體這樣的樣式,我們openpyxl里面有專門的字體樣式,可以通過以下方式導入,使用的代碼如下:

from openpyxl.styles import Font, PatternFill, Border, Side, Alignment
font = Font(name='微軟雅黑', size=10, bold=False, italic=False, vertAlign=None,
underline='none', strike=False, color='FF000000')
這里我們先引入了Excel中的字體樣式,然后通過構造函數,創建了一個樣式,比如這里創建的字體為微軟雅黑,字體大小為10,不加粗,沒有斜體,沒有下划線,沒有刪除線,顏色為黑色。

盡然我們創建了一個樣式,接下里就是將樣式設置到單元格中去,比如將剛才的樣式設置到表格11單元格中,以下兩種方式都行,代碼如下:

sheet['A1'].font=font
sheet.cell(1,1).font=font
填充樣式
說完字體樣式,第二個運用最多的就是填充樣式,比如給某個單元格填充背景色,或者填充圖案等等等等,我們先來看看代碼的操作方式:

fill = PatternFill(fill_type='darkUp',start_color='FFFF00',end_color='FF0000')
sheet.cell(1,1).fill=fill
這段代碼實現的樣式如下:

 

可以看到它的圖案類型為darkUp,開始顏色行色,結束顏色為紅色,紅黃相間的格柵化樣式填充,當然它的圖案類型還有很多,以下都是:

{‘gray0625’, ‘lightHorizontal’, ‘darkVertical’, ‘darkGray’, ‘darkDown’, ‘solid’, ‘lightTrellis’, ‘darkHorizontal’, ‘gray125’, ‘lightGray’, ‘lightDown’, ‘lightUp’, ‘mediumGray’, ‘darkUp’, ‘darkGrid’, ‘darkTrellis’, ‘lightVertical’, ‘lightGrid’}
具體用到哪個,還要根據你的需求自由的選擇,重點需要說明的是,當圖案為solid時,默認只填充start_color顏色,也就是黃色,有興趣的可以試試。

邊框樣式
第三個要介紹的就是邊框樣式,邊框樣式在實際的工作中,可以說也是用的比較多的,了解一下對於實際的工作還是有好處的,操作代碼如下:

border = Border(left=Side(border_style='dashDotDot',color='9932CC'),
right=Side(border_style='dashDotDot',color='121212'),
top=Side(border_style='dashDotDot',color='8B0A50'),
bottom=Side(border_style='dashDotDot',color='B3EE3A'),)
sheet.cell(5,4).border=border
上面設置了上下左右四個邊框的顏色以及樣式,這里我都設置為虛線樣式,顏色隨機抽取了四個比較深的顏色,實現的效果如下圖所示(上紅,下綠,左紫,右黑):

 

當然邊框還有很多參數的,如果想運用的更多更廣,可以參考openpyxl開發文檔,博主這里只介紹最常用的邊框樣式。

對齊樣式
最后一個樣式為對齊樣式,相對於上面三種樣式來說,這個對齊樣式每次幾乎都用到,現在我們先來弄一個單元格居中對齊,代碼如下:

alignment = Alignment(horizontal='center',
vertical='center',
text_rotation=0,
indent=0)

sheet.cell(5,3).alignment=alignment
這里我們設置了對齊樣式為水平居中,垂直居中,文字旋轉角度為0(最多可以旋轉180°),縮進為0,比如旋轉90度,文字就變成了如下圖所示的樣式:

 

當然這種對齊樣式還有許多其他參數,但用的最多的也就是這些,如果想了解其他的請前往openpyxl開發文檔了解最詳細的參數。這里就不做過多的贅述了。

Excel公式
鏈接公式
樣式說完了,我們還需介紹一下Excel公式的應用,比如我們有些Excel表格中有鏈接,就需要用公式把鏈接設置成可以點擊的超鏈接模式,同樣比如計算某些值的時候,也會用到Excel公式。我們先來講解以下如何讓URL鏈接可以點擊,代碼如下:

sheet.cell(6,3).value='=HYPERLINK("%s","%s")' % ("https://www.baidu.com", "百度一下")
上面代碼理解起來很簡單,就是我要在第六行第三列輸入百度一下,且百度一下可以點擊跳轉到指定的網頁之中(第一個參數就是需要跳轉的地址)。

 

這里其實就是excel中的公式,當然你也可以設置某個目錄下的exe文件,點擊后直接執行exe,也可以設置跳轉到某個單元格,比如想點擊后跳轉到A1,代碼如下:

sheet.cell(6,3).value='=HYPERLINK("%s","%s")' % ("#A1", "跳轉到A1")
計算公式操作
現在我還有一個需求,比如我要計算下面表中A1到E1這5個數的和,在Excel應該怎么操作呢?

 

其實也和上面一樣,只要你知道Excel中的計算和公式,就可以直接套用到代碼中,這樣哪怕是編程小白,也基本可以掌握公式的應用規則,因為只要會Excel的都會知道,代碼如下:

sheet['F1']='=SUM(A1:E1)'
Excel單元格的合並與拆分
Excel估計已經介紹的差不多了,不過博主剛剛想起來,應該還有一個常用的操作方式,就是合並單元格,這里我們同樣先來看一段代碼:

sheet.merge_cells('A1:E1')
合並也是操作表結構,這里合並剛上面那個表的數字,可以看到我們合並了A1到E1的所有單元格,同時,合並后的單元格顯示第一個單元格內容。

 

熟話說得好,有合並就有拆分,同樣我們也需要拆分單元格,那這樣,我們就把先合並的單元格,在拆分成原來的樣子,代碼如下:

sheet.unmerge_cells('A1:E1')
很簡單,代碼前面加一個un就行,但這里有一個需要注意的地方,剛合並單元格,默認填充的是第一個單元格中的數據,但拆分單元格,並不會自動填充數據,原先有的整個數據顯示在第一個單元格之中,而其他拆分出來的單元格,不會顯示任何數據。

 

總結了這么多,相信對經常使用Excel的小伙伴應該會有所幫助,如果寫的還可以記得給點個贊!

文章知識點與官方知識檔案匹配,可進一步學習相關知識
————————————————
版權聲明:本文為CSDN博主「李元靜」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/liyuanjinglyj/article/details/87895700


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM