pythonの条件分岐をつかってエクセルを操作する
今回紹介するのはpythonでエクセル操作の番外編でpythonの条件分岐を使ってみたいと思います。openpyxlの基本的な使い方は下のリンクをみていただけるとわかると思います。
- pythonのopenpyxlモジュールを使ってエクセル操作【1時間目:準備】
- pythonのopenpyxlモジュールを使ってエクセル操作【2時間目:シートの取得】
- pythonのopenpyxlモジュールを使ってエクセル操作【3時間目:セル操作】
- pythonのopenpyxlモジュールを使ってエクセル操作【4時間目:もっとセル操作】
今回紹介するプログラムは使い方次第ではエクセル操作に関して大きく貢献する可能性があります。ポイントは条件分岐がつかえることです。今回は簡単な条件分岐ですが、条件分岐を複雑にすることでもっと幅広く対応される可能性はあります。
それではエクセルファイルをみていきましょう。
適当ですが、1~10がセルの値になっているエクセルファイルがあったとしましょう。(こんな簡単なエクセルファイルを扱うことはないかもしれませんが。)このファイルの5より大きい部分だけフォントを変更したいと思います。
コードを見てみましょう。
import openpyxl, os from openpyxl.styles import Font wb = openpyxl.load_workbook('test.xlsx') sheet = wb.get_sheet_by_name('Sheet') italic24_font = Font(size=24, italic=True) # ある部分の文字フォントだけ変更する for row_num in range(2, sheet.max_row + 1): style = sheet.cell(row=row_num, column=1) if style.value > 5: style.font = italic24_font wb.save('test.xlsx')
まずはじめに、fontを変更する機能を使うには、from openpyxl styles import fontをインポートする必要があります。7行目はフォントのスタイルを指定しています。10行目はforループで全行を回します。このプログラムのポイントは11行目と12行目です。
- style=sheet.cell() → セルオブジェクトである。
- セルの.value → セルの値はint型である
このふたつがポイントになってきます。.fontはint型には使うことはできません。style.fontのstyleはセルオブジェクトです。ですがif文に使っているのはstyle.valueとしてint型にしています。これは比較演算子がint型でないと使えないためです。
このポイントを押さえていれば、色々なことができそうです。
最後にsave()メソッドを使って上書き保存します。その後エクセルファイルを確認すると5より大きい部分のフォントが変わります。これは実際エクセルソフトで操作するほうが早いかもしれません。ですが、膨大なデータが入っているエクセルファイルを扱う場合は様々な条件を指定してpythonでエクセルを扱うことにより作業を効率化することができるかもしれません。
VBAでも同じようなことはできますがpythonでも割と簡単にエクセルを扱えるということをお伝えしたかったです。それでは。
コメント