'Python 3 學習筆記:Excel 基礎操作'

Excel Python 人生第一份工作 雲逸蒼穹 2019-08-15
"

人生苦短,我用 Python

"

人生苦短,我用 Python

Python 3 學習筆記:Excel 基礎操作

安裝模塊

OpenPyXL 模塊是一個第三方模塊,所以需要使用 pip 工具安裝,

pip install openpyxl

文件結構

首先,我們需要了解一下 Excel 文件的基本結構,一個 Excel 文件被稱為一個工作薄,工作薄中可以包含多個工作表(sheet),每個 sheet 由列和行組成,列與行的交叉點被稱為單元格,實際數據就是存放在單元格中的。單元格中的數據可以是數字、文本、時間或者公式等等。

"

人生苦短,我用 Python

Python 3 學習筆記:Excel 基礎操作

安裝模塊

OpenPyXL 模塊是一個第三方模塊,所以需要使用 pip 工具安裝,

pip install openpyxl

文件結構

首先,我們需要了解一下 Excel 文件的基本結構,一個 Excel 文件被稱為一個工作薄,工作薄中可以包含多個工作表(sheet),每個 sheet 由列和行組成,列與行的交叉點被稱為單元格,實際數據就是存放在單元格中的。單元格中的數據可以是數字、文本、時間或者公式等等。

Python 3 學習筆記:Excel 基礎操作

基本操作

創建工作薄

首先,需要從 OpenPyXL 引入 Workbook 類,

from openpyxl import Workbook

使用該類可以創建一個 Excel 文件,

workBookObject = Workbook()

workBookObject 就是 Workbook 類的實例的名稱,也就是一個 Excel 工作薄。

通過 sheetnames 屬性獲取當前工作薄中的工作表,

workBookobject.sheetnames

還可以通過 active 屬性獲取當前正在操作的工作表,

workBookobject.active

保存工作薄

創建 Workbook 類的實例之後,其實並沒有創建一個真正的 Excel 文件,從一點就可以看出,我們在創建 Workbook 對象時,並沒有給它一個實際的文件名,這時候可以通過 save() 方法將工作薄保存成一個實際的 Excel 文件,

workBookobject.save(filename="example.xlsx")

該方法會將文件保存到當前目錄下。

如果需要將文件保存至指定位置,filename 參數也可以是一個路徑,如:

workBookobject.save(filename=r"D:\\桌面\\example.xlsx")

使用 save() 方法保存文件時,要注意如果目錄下已經存同名文件,該方法不會做出提示,而是會直接覆蓋保存。

創建工作表

創建工作薄之後,會默認自動創建一個工作表,我們也可以自己創建一個新的工作表,

workBookobject.create_sheet(sheetName)

sheetName 表示新工作表的名稱。如果需要將工作表重新命名,可以修改工作表的 title 屬性,

 workBookobject["oldSheetName"].title = "newSheetName"

oldSheetName 即該工作表之前的名字,newSheetName 表示重命名之後的名字。而且可以看出,工作薄可以通過類似索引的方式訪問它的工作表,只不過這個“索引”是工作表的名字。

複製工作表

如果想創建某個工作表的副本,可以使用下面的方法,

workBookobject.copy_worksheet(sheetName)

sheetName 表示該工作薄中一個已經存在的工作表的名字。

刪除工作表

如果某個工作表不再需要,則可以通過 remove() 方法將其刪除,

workBookobject.remove(workBookobject["sheetName"])
"

人生苦短,我用 Python

Python 3 學習筆記:Excel 基礎操作

安裝模塊

OpenPyXL 模塊是一個第三方模塊,所以需要使用 pip 工具安裝,

pip install openpyxl

文件結構

首先,我們需要了解一下 Excel 文件的基本結構,一個 Excel 文件被稱為一個工作薄,工作薄中可以包含多個工作表(sheet),每個 sheet 由列和行組成,列與行的交叉點被稱為單元格,實際數據就是存放在單元格中的。單元格中的數據可以是數字、文本、時間或者公式等等。

Python 3 學習筆記:Excel 基礎操作

基本操作

創建工作薄

首先,需要從 OpenPyXL 引入 Workbook 類,

from openpyxl import Workbook

使用該類可以創建一個 Excel 文件,

workBookObject = Workbook()

workBookObject 就是 Workbook 類的實例的名稱,也就是一個 Excel 工作薄。

通過 sheetnames 屬性獲取當前工作薄中的工作表,

workBookobject.sheetnames

還可以通過 active 屬性獲取當前正在操作的工作表,

workBookobject.active

保存工作薄

創建 Workbook 類的實例之後,其實並沒有創建一個真正的 Excel 文件,從一點就可以看出,我們在創建 Workbook 對象時,並沒有給它一個實際的文件名,這時候可以通過 save() 方法將工作薄保存成一個實際的 Excel 文件,

workBookobject.save(filename="example.xlsx")

該方法會將文件保存到當前目錄下。

如果需要將文件保存至指定位置,filename 參數也可以是一個路徑,如:

workBookobject.save(filename=r"D:\\桌面\\example.xlsx")

使用 save() 方法保存文件時,要注意如果目錄下已經存同名文件,該方法不會做出提示,而是會直接覆蓋保存。

創建工作表

創建工作薄之後,會默認自動創建一個工作表,我們也可以自己創建一個新的工作表,

workBookobject.create_sheet(sheetName)

sheetName 表示新工作表的名稱。如果需要將工作表重新命名,可以修改工作表的 title 屬性,

 workBookobject["oldSheetName"].title = "newSheetName"

oldSheetName 即該工作表之前的名字,newSheetName 表示重命名之後的名字。而且可以看出,工作薄可以通過類似索引的方式訪問它的工作表,只不過這個“索引”是工作表的名字。

複製工作表

如果想創建某個工作表的副本,可以使用下面的方法,

workBookobject.copy_worksheet(sheetName)

sheetName 表示該工作薄中一個已經存在的工作表的名字。

刪除工作表

如果某個工作表不再需要,則可以通過 remove() 方法將其刪除,

workBookobject.remove(workBookobject["sheetName"])
Python 3 學習筆記:Excel 基礎操作

賦值與取值

賦值

上面的操作都是針對工作薄及工作表的,但是我們知道在 Excel 文件中,真正的數據都是儲存在單元格中的。

在 Excel 文件中,列使用字母表示,行使用數字表示,如果將其視為一個座標系,則列的值就是 X 軸座標值,行的值就是 Y 軸座標值,單元格是列與行的交叉點,所以單元格表示成 A1、F5 等。

給單元格賦值同樣可以採用類似索引的方式,首先取得工作表,然後再給其中某個單元格賦值即可,

workBookobject["sheetName"]["cellName"] = value

其中,cellName 就是單元格的名稱,如 A1、F5 等。

還可以使用 cell() 方法對單元格進行賦值,

workBookobject["sheetName"].cell(column=colNo, row=rowNo, value=value)

該方法需要三個參數,即列、行和值。

其中,列比較特殊,雖然在 Excel 文件中,列是由字母表示的,但是在 cell() 方法中,列和行一樣都是使用整數表示,從 1 開始。例如,E3 這個單元格的列是 E,但是在 cell() 方法中需要將其賦值為整數 5,如:

workBookobject["sheetName"].cell(column=5, row=3, value="python")

取值

取值很簡單,直接使用單元格的編號即可取出其中的數據,

workBookobject["sheetName"]["cellName"].value

cellName 表示單元格的名字,即它的列和行的座標點,如 A9。單元格除了 value 這個屬性,還有 column(列)和 row(行)兩個屬性,用法同 value 一樣。

上面是取一個單元格的值,如果想要取一行中若干個單元格的值,只要在起始的單元格和結束的單元格之間使用冒號(:)分隔即可,

workBookobject["sheetName"]["startCellName":"endCellName"]

或者,

workBookobject["sheetName"]["startCellName:endCellName"]

得到的結果是一個元組的元組,即二維元組,裡層元組的元素是 Cell 類型,如下所示:

(
(<Cell 'Sheet'.A1>,),
(<Cell 'Sheet'.A2>,),
(<Cell 'Sheet'.A3>,),
(<Cell 'Sheet'.A4>,),
(<Cell 'Sheet'.A5>,),
(<Cell 'Sheet'.A6>,),
(<Cell 'Sheet'.A7>,),
(<Cell 'Sheet'.A8>,),
(<Cell 'Sheet'.A9>,)
)

所以,訪問其中 A3 的值就是,

workBookobject["sheetName"]["A1:A9"][3][0].value

同理,如果是多列多行的單元格,同樣是一個二維元組,

(
(<Cell 'Sheet'.A1>, <Cell 'Sheet'.B1>, <Cell 'Sheet'.C1>),
(<Cell 'Sheet'.A2>, <Cell 'Sheet'.B2>, <Cell 'Sheet'.C2>),
(<Cell 'Sheet'.A3>, <Cell 'Sheet'.B3>, <Cell 'Sheet'.C3>),
(<Cell 'Sheet'.A4>, <Cell 'Sheet'.B4>, <Cell 'Sheet'.C4>),
(<Cell 'Sheet'.A5>, <Cell 'Sheet'.B5>, <Cell 'Sheet'.C5>),
(<Cell 'Sheet'.A6>, <Cell 'Sheet'.B6>, <Cell 'Sheet'.C6>),
(<Cell 'Sheet'.A7>, <Cell 'Sheet'.B7>, <Cell 'Sheet'.C7>),
(<Cell 'Sheet'.A8>, <Cell 'Sheet'.B8>, <Cell 'Sheet'.C8>),
(<Cell 'Sheet'.A9>, <Cell 'Sheet'.B9>, <Cell 'Sheet'.C9>)
)

只不過這裡是以列為基準,拋開外層元組不看,裡層每個元組的元素都是同一列的單元格。

使用公式

在單元格使用公式與在 Office Excel 中操作文件一樣,如設置一個 SUM 公式,

workBookobject["sheetName"]["A10"].value = "=SUM(A1:A9)"

則單元格 A10 的值就是 A1 到 A9 的和,前提是其中的數據是可以計算的。

但是,openpyxl 不會檢查寫的 Excel 公式名稱及語法是否正確,如果錯誤不會給出任何提示,但是可以使用 openpyxl.utils 中的 FORMULAE 檢查公式名稱是否正確,例如,

from openpyxl.utils import FORMULAE


print("SUM" in FORMULAE)

如果公式名稱返回 True,否則返回 False。

加載已有文件

如果需要打開一個已經存在的 Excel 文件,可以先加載該文件,

from openpyxl import load_workbook


workBookobject = load_workbook("example.xlsx")

同樣可以使用上面的方法對數據進行操作。


因頭條號文章修改次數有限,而本文一直在持續修改充實的路上,故請各位看官移步個人博客,謝謝!

點擊下方 瞭解更多 即可傳送到博客。

"

相關推薦

推薦中...