【Python辦公自動化筆記-Excel篇5】存取區塊儲存格

【Python辦公自動化筆記-Excel篇5】存取區塊儲存格

更新於 發佈於 閱讀時間約 3 分鐘

區塊儲存格

假設我們有一張工作表如下,而我們打算讀取C3:D6區塊儲存格的值。

sample.xlsx

sample.xlsx

from openpyxl import load_workbook
path = 'D:/sample.xlsx'
wb = load_workbook(path)
ws = wb['竹科1月']
cell_range = ws['C3:D6']

以下的程式碼可以列印出C3:D6區塊儲存格的資料,注意openpyxl預設是採以列為主(row-major)拜訪儲存格。

for row in cell_range:  # 預設以列為主拜訪
print(row)

for row in cell_range:
for cell in row:
print(cell.value)
raw-image

如果需要以行為主(column-major)的方式印出區塊儲存格的值,可以改用以下的程式碼。

for col in ws.iter_cols\
(min_row = 3, max_row = 6, min_col = 3, max_col = 4):
for cell in col:
print(cell.value)
raw-image

列印整張工作表

以下的程式碼採以行為主的方式,印出整張工作表各儲存格的值。

for col in ws.columns:
for cell in col:
print(cell.value)

想當然爾,利用工作表的rows屬性也可以印出整張工作表各儲存格的值。

以下則是用可能最精簡的的程式碼,達到同樣的目的;但是輸出的資料格式略有不同,有興趣的朋友們不妨猜猜看會有什麼樣的結果。

print(list(ws.values))


整列或整行資料的選取

你可以用ws('3:6')選取第3列到第6列,ws('C:D')選取C行到D行。

行號英數字轉換

此外,你可以將英文字母表示的行號和數字表示的行號互相進行轉換。

import openpyxl
print(openpyxl.utils.get_column_letter(2)) # 輸出 B
print(openpyxl.utils.column_index_from_string('Z') # 輸出 26



avatar-img
阿寶哥的沙龍
1會員
10內容數
留言
avatar-img
留言分享你的想法!
阿寶哥的沙龍 的其他內容
"求和"應該是我們最常用到的基本數學運算了,利用迴圈和切片的技巧,以下的程式碼能分別印出每個人的總分和各科的總分。
實務工作上,我們很可能會遇到需要對每張工作表的某一固定位置儲存格求和的情況。比如說,E5儲存格存放每個月的業績總額,以下的程式碼可以求得一整年的總營業額。 以下的程式碼則是用更具Python風格、更精簡且更漂亮的列表推導式(List Comprehension)來輕鬆達成同樣的功能。
我們利用工作表的move_range()方法,可以輕鬆地移動儲存格。其中,rows參數的值表示向下移幾列,cols參數的值表示向右移幾行;當rows參數的值是負數時,則表示向上移幾列;cols參數的值負數時,則表示向上移幾行, 也可以一次移動一整個區塊範圍的儲存格。 利用工作表的freeze_pan
"求和"應該是我們最常用到的基本數學運算了,利用迴圈和切片的技巧,以下的程式碼能分別印出每個人的總分和各科的總分。
實務工作上,我們很可能會遇到需要對每張工作表的某一固定位置儲存格求和的情況。比如說,E5儲存格存放每個月的業績總額,以下的程式碼可以求得一整年的總營業額。 以下的程式碼則是用更具Python風格、更精簡且更漂亮的列表推導式(List Comprehension)來輕鬆達成同樣的功能。
我們利用工作表的move_range()方法,可以輕鬆地移動儲存格。其中,rows參數的值表示向下移幾列,cols參數的值表示向右移幾行;當rows參數的值是負數時,則表示向上移幾列;cols參數的值負數時,則表示向上移幾行, 也可以一次移動一整個區塊範圍的儲存格。 利用工作表的freeze_pan