您現在的位置是:首頁 > 藝術

用 Python 讀寫 Excel 表格,就是這麼的簡單粗暴且乏味

由 王多餘帶你看生活 發表于 藝術2022-06-28
簡介iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):print(row)儲存工作表將我們之前建立的工作簿儲存格式為 xlsx 的檔案,若已存在則覆蓋:wb

stm可以讀入excel表格嗎

過去,在很多金融、市場、行政的招聘中,面試官都會問一句:“你精通 EXCEL 嗎?”

但今天,他們可能更喜歡問:“你會 Python 嗎?”

越來越多的企業開始用 Python 處理資料,特別是金融、證券、商業、網際網路等領域。

在頂級公司的高階職位中,Python 更是成為了標配:

用 Python 讀寫 Excel 表格,就是這麼的簡單粗暴且乏味

Python 究竟有什麼法力能讓大家如此青睞?

舉個例子:在過去,如果老闆想要獲取 A 股所有股票近 2 年的資料,你可能需要

登入-查詢-下載-記錄到excel

迴圈 500 多次,即使你是一個沒有感情的複製機器人,也需要一兩天的時間。

但如果你掌握了 Python,只需要寫個指令碼,

泡杯咖啡的功夫

資料就全部下載好了。

再加上 Python 強大的繪圖功能,你可以一次性完成

資料收集 — 整理 — 分析 — 繪圖

的過程,直接把分析結果用圖表呈現出來。

用 Python 讀寫 Excel 表格,就是這麼的簡單粗暴且乏味

今天本篇文章,我們就總結了一下利用 python 操作 Excel 檔案的第三方庫和方法。內容出自課程——《OpenPyXL 處理 Excel 基礎入門》

用 Python 讀寫 Excel 表格,就是這麼的簡單粗暴且乏味

首先,我們來學習一下,如何

用 Python 建立和儲存 Excel 文件。

對於經常與資料打交道的人來說,Excel 是經常使用的工具;對於與資料打交道的程式設計師來說,OpenPyXL 庫是一個利器。Python 官方提供了這樣一個庫,讓我們可以直接透過 Python 程式碼實現對 Excel 檔案的操作,操作檔案格式包括 xlsx、xlsm、xltx、xltm。

知識點

建立/開啟工作簿

訪問工作表單元及其值

儲存工作表

讓我們先來學習簡單的建立和儲存功能。

建立/開啟工作簿

首先,下載實驗所需

shiyanlou。xlsx

示例檔案,同時安裝指定版本的 openpyxl 庫。

!wget -nc “https://labfile。oss。aliyuncs。com/courses/1585/shiyanlou。xlsx”

!pip install openpyxl==3。0。3

使用 openpyxl 不需要在檔案系統上建立檔案,只需匯入

Workbook

類並開始工作:

教學程式碼:

from openpyxl import Workbook

wb = Workbook() # 例項化一個工作簿物件

print(wb)

也可以開啟本地已有的工作簿進行實驗操作:

from openpyxl import load_workbook

wb = load_workbook(filename=‘shiyanlou。xlsx’)

print(wb)

load_workbook

中可以使用以下幾個引數:

data_only

:帶有公式的單元格是否具有公式(預設具有)或上一次 Excel 讀取工作表時儲存的值。

keep_vba

:設定是否保留任何 Visual Basic 元素(預設保留),可選擇保留但是不支援編輯。

工作簿建立時總是會預設建立一個名為 Sheet 工作表,可以透過使用

Workbook。active

屬性獲取:

ws = wb。active # 獲取當前活躍的工作表

print(ws)

也可以透過

Workbook。create_sheet()

建立工作表並命名,若不設定名字引數則預設命名為 sheet,sheet1,sheet2。。。建立的工作表位置預設總是插入到最後:

ws = wb。create_sheet() # sheet

ws1 = wb。create_sheet(“Mysheet”) # 命名為 Mysheet

ws2 = wb。create_sheet(“Mysheet1”, 0) # 新建 Mysheet1 工作表插入到第一個位置

ws3 = wb。create_sheet(“Mysheet2”, -1) # 新建 Mysheet2 工作表插入到倒數第二個的位置

ws。title = “shiyanlou” # 將上述 ws 工作表重新命名為 shiyanlou

print(“Success”)

預設情況下,工作表的標籤背景顏色為白色。我們可以透過

Worksheet。sheet_properties。tabColor

屬性改變顏色:

ws。sheet_properties。tabColor = “1072BA” # RGB 格式

print(ws。sheet_properties。tabColor)

用 Python 讀寫 Excel 表格,就是這麼的簡單粗暴且乏味

我們給工作表取名後,可以把它作為該工作簿的一個鍵,簡化後續程式碼,例如:

ws = wb[“shiyanlou”]

print(ws)

若想檢視該工作簿下的所有工作表,可以透過函式

Workbook。sheetname

print(wb。sheetnames)

也可以透過迭代的方式列印所有工作表

for sheet in wb:

print(sheet。title)

我們可以透過

Workbook。copy_worksheet()

方法在單個工作簿中建立工作表的副本:

source = wb。active # 獲取活躍的工作表

target = wb。copy_worksheet(source) # 上述獲取的工作表為其建立副本

print(target)

訪問工作表單元及其值

前面我們已經知道了如何建立獲取工作簿及工作表,接下來我們將學習修改單元格的內容。以下操作基於

shiyanlou。xlsx

工作簿中的

shiyanlou

工作表進行。

單元格可以直接作為工作表的鍵進行訪問賦值,用

value

屬性進行值訪問:

c = ws[‘A4’] # 將訪問 A4 單元格

ws[‘A4’] = 4 # 對 A4 單元格進行賦值

c。value # 訪問 A4 單元格的值,同 ws[‘A4’]。value

注意:在記憶體中建立工作表時,它不包含任何單元格,單元格都是在首次訪問時自動建立的。

以上程式碼也可以透過更簡便的程式碼實現:

d = ws。cell(row=4, column=2, value=10) # B4 進行賦值

ws[‘B4’]。value # 訪問單元格的值

訪問多個單元格

可以使用切片訪問範圍為 A1 到 C2 的所有單元格:

cell_range = ws[‘A1’:‘C2’]

cell_range

行或列的範圍可以類似地獲得:

# 訪問列

colC = ws[‘C’]

col_range = ws[‘C:D’]

# 訪問行

row10 = ws[10]

row_range = ws[5:10]

print(col_range, row_range)

也可以使用

Worksheet。iter_rows()

返回行:

for row in ws。iter_rows(min_row=1, max_col=3, max_row=2):

for cell_row in row:

print(cell_row)

使用

Worksheet。iter_cols()

返回列:

for col in ws。iter_cols(min_row=1, max_col=3, max_row=2):

for cell_col in col:

print(cell_col)

如果需要遍歷工作表的所有行或列,則可以使用

Worksheet。rows

屬性。出於效能原因,該屬性在只讀模式下不可用:

ws[‘C9’] = ‘hello world’

tuple(ws。rows)

或者使用

Worksheet。columns

屬性。出於效能原因,該屬性在只讀模式下不可用:

tuple(ws。columns)

訪問值

如果只需要工作表中的值,則可以使用該

Worksheet。values

屬性。遍歷工作表中的所有行,但僅返回單元格值:

for row in ws。values:

for value in row:

print(value)

Worksheet。iter_rows()

Worksheet。iter_cols()

可以用

values_only

引數,只返回單元格的值:

for row in ws。iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):

print(row)

儲存工作表

將我們之前建立的工作簿儲存格式為 xlsx 的檔案,若已存在則覆蓋:

wb。save(“shiyanlou。xlsx”)

轉發+私信【資料】獲取方式

推薦文章