Udemy の Webスクレイピングコースを 90%OFF で学べます!! >> クーポンは10/27(金)まで

【python】面倒なExcel入力作業を自動化する方法(openpyxl)

目次

ライブラリのインストール

pythonではExcel操作を可能にするopenpyxlというライブラリがオープンソースで公開されています。

下記をターミナル(mac)もしくはコマンドプロンプト(Windows)に入力し、ライブラリのインストールを実行しましょう。

(参考:PyPI – the Python Package Index)

pip install openpyxl
openpyxlのインストール

ターミナル(mac)もしくはコマンドプロンプト(Windows)の最終行に「Successfully installed 〜〜〜」と表示されれば、インストールは成功です。

openpyxlライブラリの使い方

今回はExcelシートへの値の書き込みを自動化する方法を紹介していきます。

Excelファイルの作成やシートの追加・変更・削除の方法を知りたい方はこちらも合わせてどうぞ。

では、実際にpythonプログラムコードとともに、openpyxlライブラリを使って入力を自動化する方法を見ていきましょう。


Excelファイルの読み込み

まずは、既存のExcelファイルを読み込みます。Excelファイルを開くイメージですね。

# 「sample.xlsx」というExcelファイルを読み込み
wb = openpyxl.load_workbook("sample.xlsx")

openpyxlライブラリのload_workbook()メソッドで任意のExcelファイルを読み込むことができます。

上記コードの場合、.pyファイルと同じディレクトリ(階層)にある「sample.xlsx」を読み込むことになります。


別のディレクトリにある.xlsxファイルを読み込む場合は、引数を絶対パスで指定することで同様に読み込み可能です。


シートの選択・取得

次に読み込んだExcelファイルからシートを選択しましょう。

# 「Sheet」というシート名のシートを選択
ws = wb["Sheet"]

Excelファイルからシートを読み込む際は、シート名を指定するだけですのでとても簡単ですね。

もし、読み込んだExcelファイル内のシート名を調べたい方は合わせてこちらも参考にしてみてくださいね。


セル範囲の指定

選択したExcelシートのどの範囲(セル)に値を入れるかを予め指定します。

今回は↑画像のように「A1:C3」を指定してみましょう。

# Excelシートの「A1:C3」を指定・取得
cell_range = ws["A1:C3"]
print(cell_range)

# 出力結果
((<Cell 'Sheet'.A1>, <Cell 'Sheet'.B1>, <Cell 'Sheet'.C1>),
 (<Cell 'Sheet'.A2>, <Cell 'Sheet'.B2>, <Cell 'Sheet'.C2>),
 (<Cell 'Sheet'.A3>, <Cell 'Sheet'.B3>, <Cell 'Sheet'.C3>))

セル範囲を選択し、print()関数で出力結果を見てみると

ひとつずつセルのオブジェクトを行ごとに一つのタプルに格納して取得していることがわかります。

1行目のセル範囲が<Cell ‘Sheet’.A1>が「A1セル」、<Cell ‘Sheet’.B1>が「B1セル」…、

2行目のセル範囲が<Cell ‘Sheet’.A2>が「A2セル」、<Cell ‘Sheet’.B2>が「B2セル」…というイメージですね。

選択したすべての行のタプルを括って、さらに一つのタプルに格納しています。


セルに値を入力

それでは、実際に値を入力してみましょう。

# 「A1:C3」のすべてのセルに100を入力
for cell_row in cell_range:
    for cell in cell_row:
        cell.value = 100

繰り返し処理 for 文を使って、ひとつずつセルに「100」を入力します。

一つ目の for 文では行のタプルを取得し、さらに二つ目の for 文で行タプル内の一つずつのセルを取得しています。

実行後のExcelシートを見てみましょう。

たしかにセルに値を入力できていますね。


Excelファイルの保存

入力処理の後には必ずExcelファイルを保存するコードを書きましょう。

# 元のファイル「sample.xlsx」に『上書き保存』
wb.save("sample.xlsx")

# 新たに「input_data.xlsx」として『名前をつけて保存』
wb.save("input_data.xlsx")

元のファイルに『上書き保存』する場合は、読み込んだファイル名と同じファイル名を引数に指定しましょう。

新たに『名前をつけて保存』する場合は、新しいファイル名を引数に指定しましょう。

まとめ

pythonではとても簡単なコードでExcelの入力作業を自動化することができます。

今回は使い方の紹介のためシンプルな入力作業でしたが、応用すれば日々の面倒なExcel作業を大幅に削減できます。

ぜひ活用してみてください。


よかったらシェアしてね!
目次