簡介
python除了大家熟知的機器學習、爬蟲等功能之外,還可作非常多的事情,就有如本篇要分享的『 操作Excel 』,當然有許多的程式語言都可以做到操作Excel等本地檔案控制,更或是控制Google Sheet(之前有介紹過),但python就是比較輕量化也可以串接視窗程式,那就直接看要怎樣透過python來控制Excel吧。
實作
0.安裝:直接輸入程式碼安裝
pip install openpyxl
1.認識主要關鍵詞:
workbook(活頁簿):也就是一個excel檔案。
worksheet(工作表):一個excel可以有很多個工作表,目前正在觀看或處理的工作表又稱作「活動中的工作表(active sheet)」。
欄(column):工作表中的直欄,以A、B、C…代表。
行(row):工作表中的橫列,以1、2、3…代表。
儲存格(cell):工作表中的每一個都是一個儲存格。
2.建立檔案:
import openpyxl
fn = 'new_excel.xlsx'
wb = openpyxl.Workbook()
wb.save(fn)
這邊我們需要輸入要建立的檔案名稱,並賦予路徑,這邊我就以fn來當作容器,並且使用到『 Workbook() 』類別,並使用其中的『 save(路徑)』函式,即可儲存,如上圖。
3.建立工作列表:
import openpyxl
fn = 'Excel/man.xlsx'
wb = openpyxl.Workbook()
wb.create_sheet("Mysheet1", 1)
wb.save(fn)
創建好檔案後,當然也是可以新增除了預設工作列表以外的表單,程式碼如上,使用『 create_sheet (列表名稱 , 列表位置)』,列表位置跟陣列索引一樣,從0開始,要注意的是,他不像Google Sheet執行完成式會直接看到有新增的動作,本地檔案需要關閉再重新啟動才會看到程式有新增。
4.讀取檔案-工作列表
import openpyxl
fn = 'Excel/man.xlsx'
wb = openpyxl.load_workbook(fn)
print(wb.sheetnames)
print(wb.active)
print(wb.active.title)
透過上列程式碼可以取得我們剛剛新增的Excel所有列表名稱,使用『 sheetnames 』會儲存在一個陣列中。而也可以取得正在開啟的工作列表與其名稱,使用『 active 與 active.title』,如上圖所示。
5.讀取cell
import openpyxl
#import pandas as pd
fn = 'Excel/man.xlsx'
wb = openpyxl.load_workbook(fn)
wb.active = 0
ws = wb.active
print('excel活動工作表: ', ws)
for col in ws:
for cell in col:
print(cell.value)
print()
print('A1內容: ', ws['D1'].value)
當然我們最重要的就是要取得Excel中細部cell的值,如上方程式碼,我們先控制要『active』的工作列表,再來透過for-loop來列出這工作列表中的所有資料,但是假如我只想取的某一欄位中的值,也可以使用上方程式碼最後一列的的方式『ws[excel工作列表的名稱].value』即可。
但你看上方使用for-loop印出來的資列看起來有點亂,所以假如想要用整齊的表格來看的話,可以搭配pandas的read_excel()方式來看。如上圖所示。
6.取得工作列表的最大欄列數
import openpyxl
fn = 'Excel/man.xlsx'
wb = openpyxl.load_workbook(fn)
wb.active = 0
ws = wb.active
print('儲存格 欄名', ws['A1'].column)
print('儲存格 列名', ws['A1'].row)
print('儲存格名', ws['A1'].coordinate)
print('工作表有資料最大欄數', ws.max_column)
print('工作表有資料最小欄數', ws.min_column)
print('工作表有資料最大列數', ws.max_row)
print('工作表有資料最小列數', ws.min_row)
這邊我透過程式碼列出該套件可以偵測工作列表中有關欄、列的空間大小的方法,我最常用到的是取得有資料的表個最大值,就如上述的『max_column & max_row 』,如此一來我就可以針對某一欄的最大值來使用for-loop運行,列出該欄、列的所有資料。
小結
本篇介紹比較基本的操作Excel的一些方法,在第二篇會再介紹對Excel操作的更多方法,例如改變儲存格顏色、儲存格公式的使用、移動資料、畫統計圖表等等的進階功能,這篇比較著重於起手勢與讀取的功能。