openpyxlでエクセルファイルを編集しているんだけど、
セルの値がマイナスだったら赤文字になるようにしたい…。
なるほど…。
では今回は、「openpyxlで条件付き書式を設定する方法」を
できるだけわかりやすく解説いたします。
また、「条件付き書式を削除する方法」も紹介いたしますので、
ぜひ最後まで読んでいってください。
openpyxlで条件付き書式を設定する方法
「conditional_formatting」を使います。まずは全コードと実行結果をお見せします。
解説は後ほど行います。
全コード
下記が「A1セルの値がマイナスの時、文字を赤字にする」という条件付き書式を設定した例です。
import openpyxl
from openpyxl.styles import Font
from openpyxl.formatting.rule import FormulaRule
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
rule = FormulaRule(formula = ['A1<0'], font = Font(color='FF0000'))
ws.conditional_formatting.add('A1', rule)
wb.save('C://Utatane/output.xlsx')
rule = FormulaRule(formula = ['A1<0'], font = Font(color='FF0000'))
ws.conditional_formatting.add('A1', rule)
実行結果
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポート
import openpyxl
from openpyxl.styles import Font
from openpyxl.formatting.rule import FormulaRule
上記コードにて、今回の処理に必要なライブラリなどをインポートしています。
「ライブラリ」「インポート」に関してはインストール方法の記事をご参考ください。
コードの2行目は「文字装飾」に関するインポートで、3行目は「条件付き書式」に関するインポートです。
文字装飾に関する操作は下記記事をご参考ください。
条件付き書式の設定
rule = FormulaRule(formula = ['A1<0'], font = Font(color='FF0000'))
上記一文にて、「条件付き書式」を設定しています。
今回は、A1セルの値がマイナスの時(0より小さい時)文字色を赤にするという設定です。
【コードの解説】
新しい名前の変数(今回は「rule」)を書いたら、「=(イコール)」を書きます。
今回はわかりやすく「rule(条件)」という名前の変数にしましたが、何でも構いません。
しかしながら、つけられない名前などもありますので、下記記事をご参考ください。
イコールの後ろに「FormulaRule()」を書きます。
()内に、「条件」と「条件に当てはまった時の処理」を書いてください。
<条件付き書式設定のテンプレ>
【 変数 = FormulaRule(条件, 条件が当てはまった時の処理) 】
「FormulaRule」は大文字と小文字が混在していますので、ご注意ください。
全部小文字にすると動きません。
条件付き書式の適用
ws.conditional_formatting.add('A1', rule)
上記コードにて、条件付き書式の適用をしています(8行目で設定した条件付き書式を適用)
【コードの解説】
ワークシートが入った変数に続けて、「.conditional_formatting.add()」を書きます。
()内に「適用するセル」と「条件が入った変数(8行目設定した条件)」を書いて完了です。
<条件付き書式適用のテンプレ>
【 ワークシート変数.conditional_formatting.add(‘適用するセル’, 条件が入った変数) 】
これで、セルに条件付き書式を設定することができます。
次に、あらかじめ設定された条件付き書式を削除する方法を紹介いたします。
条件付き書式を削除する方法
import openpyxl
from openpyxl.styles import Font
from openpyxl.formatting.rule import FormulaRule
wb = openpyxl.load_workbook('C://Utatane/input.xlsx')
ws = wb['Sheet1']
ws.conditional_formatting._cf_rules.clear()
wb.save('C://Utatane/output.xlsx')
上記コードにて、シート内の条件付き書式を削除することができます。
ws.conditional_formatting._cf_rules.clear()
上記がシート内の条件付き書式を削除するコードです。
シート内すべての条件付き書式が削除されます。
(値は削除されません)
条件付き書式を再設定したい時に便利です。
エラーが出てうまく動作しない場合は、次項をご参考ください。
うまく動作しない場合の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlで条件付き書式を設定する方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!