openpyxl是什麼
openpyxl是一個python第三方庫,用於操作excel表格。openpyxl可以對excel進行讀取資料或者寫入資料,使辦公變得自動化!
安裝
前面說過openpyxl是一個第三方庫,所以我們在使用openpyxl之前要進行一個安裝。我們可以用wheel安裝法,也可以用zip,但是我建議大家還是用pip,簡便一些。
- 首先我們要開啟我們的終端
- 在終端裡輸入pip install openpyxl
(下載速度太慢的可以使用豆瓣源pip install openpyxl -i http://pypi.douban.com/simple/) - 如果沒報錯,就說明安裝成功了!
讀取資料
安裝完畢之後,我們就開始嘗試讀取excel裡面的資料,就拿一個叫做報價.xlsx的檔案舉例子。
(請掃碼獲取檔案)
首先,我們要從openpyxl這個庫裡面匯入一個叫做load_workbook的模組,輸入這段程式碼。
from openpyxl import load_workbook
之後我們就能匯入我們的excel表格了。不過要注意的是,excel表格檔案有兩種字尾名,一種是.xlsx,還有一種是.xls。我們在匯入的時候我們只能匯入.xlsx的excel表格檔案。如果你的excel表格檔案是.xls結尾的,你可以把字尾名改成.xlsx。不用擔心,改了之後你的excel表格不會出現任何問題的。還有的就是load_workbook這個函式不能用於建立excel表格,只能獲取到已經建立的表格。
(這裡的話我建議還是開啟xls檔案另存為xlsx檔案, xls檔案也有xlrd、xlwt兩個包能使用,但是這兩個包不好用)
workbook = load_workbook('報價.xlsx')#這裡請輸入你的excel表格檔案的路徑
在我們這個的報價表格檔案裡,我們有兩張工作表(英文為sheet)。分別叫做Sheet1和Sheet2(當然你可以改名)。我們可以用workbook.sheetnames屬性來列印出所有的sheet。
print(workbook.sheetnames)
我們還可以通過workbook[sheet名字]獲取表格,然後再通過sheet.dimensions屬性獲取Sheet1和Sheet2的大小。
for i in workbook.sheetnames:
sheet = workbook[i]#獲取每一張sheet工作表
print(sheet.dimensions)#列印出每一張sheet工作表的尺寸
返回結果:
A1:B5
A1:A1
若要獲取當前的工作表名字,使用sheet.title方法
print(sheet.title)
如果要獲取一個指定格子的資料,我們可以通過cell = sheet[格子],然後cell.value實現。
cell = sheet['A1']
print(cell.value)
這樣我們就獲取到了A1格子的資料“PS5 2020款”。
如果要獲取某一列的所有帶有資料的格子,我們可以這麼做。
cells = sheet['A']#進入A列
print(cells)
返回結果(元組):
(<Cell ‘Sheet1’.A1>, <Cell ‘Sheet1’.A2>, <Cell ‘Sheet1’.A3>, <Cell ‘Sheet1’.A4>, <Cell ‘Sheet1’.A5>)
寫入資料
我們完成了如何讀取資料,現在就來開始建立一個excel表格檔案。
引入我們的openpyxl庫。
import openpyxl
如果你已經建立好了一個準備被寫入的excel表格檔案,請輸入一下程式碼。
wb = openpyxl.load_workbook('檔案路徑')
如果你想寫入資料到一個還沒有被建立過的excel檔案,請輸入一下程式碼。
wb = openpyxl.Workbook()
我們現在還要獲取sheet,如果你是單個sheet,直接這樣做就行了。
sheet = wb.active
如果你的excel表格檔案有多張工作表,你就需要這樣做。
sheet = workbook[指定工作表名稱]
以下是在指定格子寫入資料的程式碼。
cell = sheet['格子']#把A1改成你想要的格子
cell.value = '內容'
wb.save(儲存的檔名)
當你開啟這個excel檔案,你就會發現A1格子上你剛剛寫入的資料(若這個格子已經有了一段文字,新寫入的資料會把它覆蓋掉)。
若想要一次性寫入多個資料,我們還可以利用sheet.append方法。
data = [['x','x','x'],['x','x','x','x']]
for row in data:
sheet.append(row)
wb.save(儲存的檔名)
data是一個帶有列表的列表,裡面的列表的資料就相當於工作表的每一行,在每一次append之後,sheet就會跳到下一行繼續加資料。
如果你想建立一個新的sheet,那你可以使用create_sheet()方法。
下一步
openpyxl的教程就結束了,如果你還想了解更多關於openpyxl的東西,你可以進行百度openpyxl的帖子。或者你還可以去閱讀openpyxl的官方教程
本作品採用《CC 協議》,轉載必須註明作者和本文連結