「xlwings セル色」
「python セルの色 xlwings」
といった検索キーワードで時折アクセスがあることに気が付きました。
表計算ソフトExcelを操作するPythonの外部ライブラリ「xlwings」を使って、セルの塗りつぶし色・背景色を取得・設定するにはどのようなコードを書けばいいのか調べていた方による検索でしょうか。
xlwingsでセルの塗りつぶし色・背景色を操作するサンプル
以下のスクリプトを実行してみてください。
bk = xw.Book()
sht = bk.sheets[0]
sht.range('A1').color = (255, 0, 0)
print('A1セルの背景色:', sht.range('A1').color)
sht.range('A2').color = '#00ff00'
print('A2セルの背景色:', sht.range('A2').color)
Excelで新規ブックが作成され先頭のワークシートが下図のような状態になり、
A1セルの背景色: (255, 0, 0)
A2セルの背景色: (0, 255, 0)
A3セルの背景色: None
と出力されます。
Range.colorで塗りつぶし色・背景色を取得・設定できる
xlwingsでは、セルを表すRangeオブジェクトに用意されているcolorプロパティで、セルの塗りつぶし色・背景色を取得・設定できます。
Range.colorの取得
上記のサンプルの場合、
print('A1セルの背景色:', sht.range('A1').color)
print('A2セルの背景色:', sht.range('A2').color)
print('A3セルの背景色:', sht.range('A3').color)
が、塗りつぶし色・背景色を取得している箇所です。
「sht.range('A1').color」「sht.range('A2').color」の出力結果「(255, 0, 0)」「(0, 255, 0)」からわかるとおり、RGB値がタプルの形で返されます。
塗りつぶし色・背景色が設定されていない場合、「sht.range('A3').color」の出力結果のとおりNoneが返されます。
Range.colorの設定
設定を行っているのが、
sht.range('A1').color = (255, 0, 0)
と
sht.range('A2').color = '#00ff00'
です。
取得できるのと同様に、RGB値をタプルで設定したり、
sht.range('A1').color = (255, 0, 0)
16進数のカラーコードを文字列として指定することで
sht.range('A2').color = '#00ff00'
設定できます。
xlwingsでセルの背景色の階層はExcel VBAより浅くて便利
Excel VBAでセルの背景色を操作するには、以下のようにオブジェクトを辿る必要があります。
Rangeオブジェクト
└ Interiorオブジェクト
└ Colorプロパティ
それに対しxlwingsの場合は、以下のように辿る階層が浅くて済むのが、
Rangeオブジェクト
└ Colorプロパティ
私は便利に感じます。
- RGB値のタプルに変換するint_to_rgb()関数がxlwings.utilsモジュールに
- 『Excel VBAユーザーのためのPythonプログラミング入門』発売に
- 拙著で紹介しているRangeが持つプロパティとメソッドの一覧
最終更新日時:2023-10-13 12:47
- Newer:『Excel VBAユーザーのためのOpenPyXL入門:Pythonの定番ライブラリの特徴をちゃんと知ろう』を出しました。
- Older:Windows11でウィンドウのスナップ設定はこんな感じに
Home » Python » xlwingsの使い方 » xlwingsでセルの塗りつぶし色・背景色を操作する-Range.colorプロパティ