openpyxlでのセルの操作方法を紹介します。セルの値を別シートや別ファイルに書き写す場合に、今回紹介するセルの値の取得・書き込みはいわゆるコピー&ペーストとして使います。書き方が何通りかありややこしいので、サンプルコードと実行後の画面と共に紹介します。
1.セルの値の取得
シートの取得と同じようにセルの取得にも方法がいくつかあります。
| 方法 | 書き方例 | 特徴 | |
|---|---|---|---|
| a | セルの番地で指定 | cell1 = ws[“C1”] | ・セルの指定が分かりやすい |
| b | 列と行を引数で指定 | cell2 = ws.cell(row=1, column=3) | ・繰返し文を使うことで複数のセルを一度に処理できる |
| c | 「b」で引数名を省略 | cell3 = ws.cell(1, 3) | ・コードが短くて済む ・慣れていないと間違えやすい |
セルの取得方法を紹介しましたが、実際にプログラムを書く際にはセルの”値”の取得をよく使います。上記のセルの取得だと指定したセルの番地情報を取得してしまい、Excelに入力することはほとんどありません。セルの値の取得だとセル内にある数値もしくは文字列を取得します。
セルの値を取得するにはセルの取得コードの終わりに「.value」を書きます。セル取得コードの書き方は先ほど紹介したどの方法でも構いません。実際の使用例はセルの書き込みとあわせて次で紹介します。
#セルの取得とセルの値の取得
cell = ws["A2"]
cell-value = ws["A2"].value
#それぞれの出力結果(「操作」シートのA2に4月と入力されている場合)
print(cell) #出力結果: <Cell '操作'.A2>
print(cell-value) #出力結果:4月
2.セルの書き込み・削除
先ほどまでの取得だと変数にデータを「格納」しただけですので、データをExcelへ「出力」する必要があります。コピー&ペーストで言うと取得がコピー、書き出しがペーストとなります。
書き込み方法は、「書き込みたいセル番地.value = 取得した値」と値を代入するだけです。
ここまで紹介してきた内容を実行する場合のコードと結果は次のようになります。
from openpyxl import load_workbook
wb = load_workbook('C:/Users/1/Desktop/python/openpyxl/セル操作.xlsx')
ws = wb["操作"]
#セルの値の取得
cell_a = ws["A2"].value
cell_b = ws.cell(row=3, column=1).value
cell_c = ws.cell(4, 1).value
#セルの書き込み
ws["C2"].value = cell_a
ws.cell(row=3, column=3).value = cell_b
ws.cell(4, 3).value = cell_c
wb.save('C:/Users/1/Desktop/python/openpyxl/セル操作.xlsx')

プログラムを実行して対象ファイルを開くと画像のように、A列の入力内容がC列に書き込まれています。パターンa~cとありますが、「1.セルの値の取得」で紹介した3パターンの書き方すべてを試しています。
また今回指定したセル.valueに値を代入しましたが、以下のように代入値に「None」と書くと入力内容が削除されます。
#セルの値の削除
ws["C2"].value = None
ws.cell(row=3, column=3).value = None
ws.cell(4, 3).value = None
3.終わりに
Excel上で値の取得、書き込み、削除の紹介をしました。これらの操作はExcelを編集するうえで頻繁に使うので慣れておきましょう。書き方については3通り紹介しましたが、すべて覚える必要はありません。しかしパターンaはシンプルで覚えやすいですが、パターンb、パターンcは複数行を繰り返し文で操作する際に便利なので、後者の使い方に慣れておくことをオススメします。

コメントを残す