區塊儲存格
假設我們有一張工作表如下,而我們打算讀取C3:D6區塊儲存格的值。
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)
如果需要以行為主(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)
列印整張工作表
以下的程式碼採以行為主的方式,印出整張工作表各儲存格的值。
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