OpenPyXL⑥ (セル番地を数値で指定)

セル番を数値で地指定

Excelのセル番地は A1B1 のように、列をAから始まる アルファベット、行を 数値 で表します。

ただ、プログラムにおいては 列を文字 で指定するのは面倒です。

そこで Worksheetオブジェクトcellメソッド を使うとセル番地を 数値のみ で指定でき forループ などで特定のセル範囲を連続して処理できるようになります。

まずは A3セル を、1列 3行目 という数値の指定だけで取得してみます。

[Google Colaboratory]

1
2
3
4
5
6
7
8
import openpyxl

book = openpyxl.load_workbook('テスト.xlsx') # Excelブックを取得
sheet = book['Sheet1'] # Sheet1を取得

print(sheet.cell(row=3, # 行を指定
column=1 # 列を指定
).value)

読み込むエクセルファイルは下記になります。

[テスト.xlsx]

[実行結果]

範囲指定

cellメソッド を forループ の中で使うと、指定した範囲 のセルの値を取得することができます。

[Google Colaboratory]

1
2
3
4
5
6
# 指定した範囲のセルの値を取得する
for i in range(2, 8): # 2行目から7行目までを繰り返す
print(i, # 行番号
sheet.cell(row=i, # 2~7が順番に代入される
column=1 # 列は2で固定
).value)

[実行結果]

範囲指定(スキップ)

rangeの 第3引数 を指定すると、指定した数だけ スキップ することができます。

[Google Colaboratory]

1
2
3
4
5
6
# 開始セルから行おきに取り出す(偶数列のセルを対象)
for i in range(2, 8, 2): # 2行目から7行目までを1行おきに繰り返す
print(i, # 行番号
sheet.cell(row=i, # 2~7まで1つおきに代入される
column=1 # 列は2で固定
).value)

[実行結果]

range関数の第3引数に2を指定することで 1行おき に値を取り出すことができました。