【openpyxl】条件付き書式が反映されない原因と対処法【Python初心者向け】

スポンサードリンク
Python
  • openpyxlで条件付き書式を設定したのに反映されなかった
  • 条件付き書式が反映されない原因や対処法が知りたい

このようなお悩みを解決に導きます。

苦労して設定した条件付き書式が反映されなかったら、不安というか、嫌な気持ちになりますよね。
でも大丈夫です。
本記事を最後まで読むことで、下記のようなことがわかります。

  • openpyxlで設定した条件付き書式が反映されない原因や対処法がわかる
  • openpyxlで条件付き書式を設定する際の注意点を学べる

Python歴3年の私が、できるだけわかりやすく解説いたします。

スポンサードリンク

openpyxlで設定した条件付き書式が反映されない原因と対処法

見本

主な原因は下記の7つです。

  • 条件付き書式の条件が適切に設定されていない
  • 条件付き書式を適用する範囲が正しく設定されていない
  • セルの書式が競合している
  • 保存していない・別名保存している
  • 保存形式がエクセル形式ではない
  • openpyxlのバージョンが古い
  • openpyxlで処理できない条件を設定している

1つ1つ解説していきます。

条件付き書式の条件が適切に設定されていない

書式が適用される条件が適切に設定されていない場合、条件付き書式が意図通りに動作しません。
「FormulaRule」などでルールを設定しますが、「条件」と「条件に当てはまる場合の処理」を再度ご確認ください。

コードを見てもわかりにくい場合は、保存後のエクセルを開いて確認してみましょう。
メニューバーの「ホーム」→「条件付き書式」から確認できます。

条件付き書式の確認方法

条件付き書式欄に表示されていない場合は、コードミスを疑うか、他の原因もチェックしてみてください。

条件付き書式を適用する範囲が正しく設定されていない

条件付き書式の適用範囲が正しく指定されていない場合、期待通りのセルに反映されません。

「conditional_formatting」などで適用範囲を設定しますが、範囲を再度確認してみてください。
適用したいセルが指定されていますか?

またよくあるのが、別のワークシートに適用してしまっている場合です。
どのワークシートに適用しているのか、コードをさかのぼって追ってみてください。

セルの書式が競合している

「A1セルの値が100以上なら文字を赤にする」という条件付き書式を適用したとします。
しかしながら、既に「A1セルの値が100以上なら文字を青にする」という条件付き書式が適用されていたら、新しい書式は反映されない場合があります。

また、条件付き書式だけではなく、直接書式を変更している場合も、競合してしまいます。
エクセルを開いて書式や条件付き書式を確認してみましょう。

保存していない・別名保存している

条件付き書式を設定しても、ファイル(ブック)を保存しないと適用されません。
下記のような「ファイルを保存するコード」が書かれているか確認してみましょう。

wb.save('C:/Utatane/output.xlsx')

また、既存のエクセルファイルを読み込んだ場合は、ファイル名も確認しましょう。
「読み込んだファイル名」と「保存するファイル名」が違っていれば「別名保存」になり、元のファイル(読み込んだファイル)は更新されません。
別名保存したファイルを確認するか、ファイル名を統一して上書き保存しましょう。

また、フォルダ名(上記例では「C:/Utatane/」の部分)も重要です。
上記の例では、「Cドライブ」の「Utataneフォルダ」の中に保存したということを指します。
別のフォルダに保存されている場合もありますので、フォルダ名や階層を確認してみましょう。

保存形式がエクセル形式ではない

保存するファイルの形式が「.xlsx」ではなく、「.csv」や他の形式だと条件付き書式が保存されない場合があります。
保存する際のファイル名(形式)を確認し、「.xlsx」になっていなければ、「xlsx」に変更してみてください。

wb.save('C:/Utatane/output.xlsx')

openpyxlのバージョンが古い

条件付き書式のサポートはopenpyxlのバージョンに依存します。
古いバージョンでは、条件付き書式の機能が十分にサポートされていないことがあります。

openpyxlをインストールしたのが随分前であったり、何らかの理由でダウングレードした心当たりがある方は、アップグレードしてみましょう。
下記のコードを実行するだけなので、簡単にできます。

pip install --upgrade openpyxl

詳細は下記記事をご参考ください。

openpyxlで処理できない条件を設定している

複雑な条件付き書式を設定した場合、openpyxlでは処理できず、期待通りに反映されない場合があります。
少しずつ条件を簡略化してみてください。

スポンサードリンク

openpyxlで条件付き書式を設定する際の注意点

見本

ここからは、openpyxlで条件付き書式を設定する際の注意点を紹介いたします。
前項からの繰り返しになるものもありますが、おさらいを兼ねて見ていきましょう。

複雑な条件は避ける

openpyxlでは、複雑な条件付き書式が処理できず、反映されない場合があります。
複雑な書式を思い通りに操作できたら便利なのですが、残念ながらしかたがありません。
できるだけシンプルな条件で設定するようにしましょう。

既存ファイルへの設定は避ける

既存ファイルには、既に条件付き書式が設定されていたり、直接書式が変更されている場合があります。
(赤文字など)
そこへさらに条件付き書式を適用してしまうと、競合が起きてうまく反映されません。

既存ファイルへの設定は避けるのが無難です。
どうしても設定したい場合は、新しいブックやシートを作って値をコピーするなど、工夫してみてください。

スポンサードリンク

最後に

openpyxlで条件付き書式が反映されない原因と対処法を解説いたしました。

当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

挫折せずにPythonを独学で学習する方法は特におすすめです。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました