Pythonでエクセルファイルの操作もできます。
エクセルをプログラムで操作というとVBA(エクセルマクロ)を思い浮かべる方が多いと思います。
しかしVBAではできないエクセル操作以外の作業も併せて行う場合、エクセル操作もPythonに行わせてしまえば実行プログラムは一つで済みます。
1.Pythonでエクセルに書き込むための機能
Pythonでエクセルに書き込むためには、以下の機能を利用します。
openpyxl
プログラムの最初で「import openpyxl」と記述することにより機能をインポートする。
この機能をプログラムの最初でインポートすることにより、エクセルへの書き込みができるようになります。
2.プログラムの書き方
プログラムの記述は以下のような内容になります。
# 機能のインポート
import openpyxl
# ブックを取得
【任意の変数1】 = openpyxl.load_workbook(‘【任意のファイル名】.xlsx’)
# シートを取得
【任意の変数2】 = 【任意の変数1】[‘【対象のシート名】‘]
# セルへの書き込み rowに対象セルの行、columnに対象セルの列を指定
【任意の変数2】.cell(row=行,column=列).value = ‘【書き込みたい文字列1】‘
【任意の変数2】.cell(row=行,column=列).value = ‘【書き込みたい文字列2】‘
# 保存する
【任意の変数1】.save(‘【任意のファイル名】.xlsx’)
これだけだといまいちわからない方もいると思いますので、実際に以下の手順でプログラムを実行してエクセルに書き出してみましょう。
3.プログラムの実行例
例えば、Pythonの実行環境に「excel_operation_test.xlsx」というエクセルファイルを用意するとします。
さらに、以下の内容とファイル名で、同じくPythonの実行環境に保存します。
# 機能のインポート
import openpyxl
# ブックを取得
WB = openpyxl.load_workbook(‘excel_operation_test.xlsx‘)
# シートを取得
WS = WB[‘Sheet1‘]
# シートへの書き込み rowに対象セルの行、columnに対象セルの列を指定
WS.cell(row=3,column=3).value = ‘こんにちは。‘
WS.cell(row=3,column=5).value = ‘元気ですか?‘
# 保存する
WB.save(‘excel_operation_test.xlsx‘)
そして以下のようにコマンドプロンプトに入力、プログラムを実行すると…
以下のようにエクセルに書き込みができました。
プログラムの記述の通り、
「excel_operation_test.xlsx」というエクセルファイルの
「Sheet1」というシートの
3行目の3列目のセルに「こんにちは。」と入力し
3行目の5列目のセルに「元気ですか?」と入力し
保存して終えたわけです。
4.捕捉
以下に捕捉内容を記載しておきます。
4−1.書き込むセルの指定の方法
上述したプログラムの
WS.cell(row=3,column=3).value = ‘こんにちは。‘
の個所は
WS.[‘C3’] = ‘こんにちは。‘
と記述することもできます。
こちらの書き方だと普段エクセルを使っていて見慣れた書き方ですね。
4−2.書き込むエクセルファイルの保存場所の指定方法
上述したプログラムの
WB = openpyxl.load_workbook(‘excel_operation_test.xlsx‘)
や
WB.save(‘excel_operation_test.xlsx‘)
は、それぞれPython実行環境のフォルダと同じ場所に「excel_operation_test.xlsx」が置かれている前提の書き方です。
もしこのエクセルファイルが別な場所、例えばデスクトップに置いてあるとしたらフルpathで以下のように書きます。
WB = openpyxl.load_workbook(‘C:\\Users\\ユーザフォルダ\\Desktop\\excel_operation_test.xlsx‘)
WB.save(‘C:\\Users\\ユーザフォルダ\\Desktop\\excel_operation_test.xlsx‘)
階層と階層の境目を示すときは「\」ではなく「\\」と記述することに注意してください。