Python: Excelのセルの値の読み込み・書き込み

Pythonのライブラリopenpyxlを使って、 Excelファイルのセルの値の読み込む方法と、 セルに値を書き込む方法を順番に紹介します。

その前段階のワークブックやワークシートへのアクセス方法については 次の記事を参照してください。
(関連記事: Excelファイルはブック、シート、セルの順番でアクセス

セルの値を読み込む方法

まずは値の読み込みです。 読み込むExcelファイル名は「test.xlsx」、 シート名は「Sheet1」で一番左端にあるシートを読み込みます。

「Sheet1」にはセル"B2"から"D4"まで下図のように値が入っています。 この中からセル"B2"、"B3"、"B4"の値を連続して取得(表示)します。

Excelの表データ

コードは次のようになります。 for文を使って値を連続で取得(表示)しています。

import openpyxl

# ワークブック
wb = openpyxl.load_workbook("test.xlsx")

# ワークシート
ws = wb.worksheets[0]

for i in range(2, 5):
	
	c = ws.cell(i, 2) # セルを取得
	print(c.value)    # セルの値を表示
実行結果
x
1
4

セルを取得する場合、次の2つの方法があります。

c = ws.cell(行番号, 列番号)

c = ws["セル番地"]

今回のように、連続してセルの値を取得したい場合は 行番号・列番号を指定して取得する方がシンプルに記述できます。

セルの値は「value」プロパティで取得します。 セルの取得と値の取得部分をまとめて次のように記述しても構いません。

print(ws.cell(i, 2).value)

セルに値を書き込む方法

次は値の書き込みです。 Excelファイルやシートは先程と同じで、 5行目のB列、C列、D列にそれぞれ「10, 60, 80」と書き込みます(下図)。

書き込み結果

コードは次のようになります。
セルに書き込む場合はvalueプロパティに値を代入します。 書き込んだ後にsaveメソッドでワークブックを保存するのを忘れないようにしてください。

import openpyxl

# ワークブック
wb = openpyxl.load_workbook("test.xlsx")

# ワークシート
ws = wb.worksheets[0]

# セルに値を書き込む
ws.cell(5, 2).value = 10
ws.cell(5, 3).value = 60
ws.cell(5, 4).value = 80

# 保存
wb.save("test.xlsx")

値を書き込む部分を「行番号・列番号」を使って記述していますが、 次のようにセル番地を指定する方法でも構いません。

ws["B5"].value = 10
ws["C5"].value = 60
ws["D5"].value = 80
Python