python 操作 Excel 表格

TNT_God發表於2020-04-09

openpyxl是什麼

openpyxl是一個python第三方庫,用於操作excel表格。openpyxl可以對excel進行讀取資料或者寫入資料,使辦公變得自動化!

安裝

前面說過openpyxl是一個第三方庫,所以我們在使用openpyxl之前要進行一個安裝。我們可以用wheel安裝法,也可以用zip,但是我建議大家還是用pip,簡便一些。

  1. 首先我們要開啟我們的終端
  2. 在終端裡輸入pip install openpyxl
    (下載速度太慢的可以使用豆瓣源pip install openpyxl -i http://pypi.douban.com/simple/)
  3. 如果沒報錯,就說明安裝成功了!

讀取資料

安裝完畢之後,我們就開始嘗試讀取excel裡面的資料,就拿一個叫做報價.xlsx的檔案舉例子。
python 操作excel表格
(請掃碼獲取檔案)

首先,我們要從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 協議》,轉載必須註明作者和本文連結

WOW~

相關文章