Home » Python » xlwingsの使い方 » xlwingsでセルの塗りつぶし色・背景色を操作する-Range.colorプロパティ

xlwingsでセルの塗りつぶし色・背景色を操作する-Range.colorプロパティ

動作検証バージョン:Windows 11 Home(64-bit)+ 64bit Excel(バージョン2302 ビルド16130.20218 キック実行)+ Python 3.10.6(64-bit) + xlwings 0.29.1

「xlwings セル色」
「python セルの色 xlwings」
といった検索キーワードで時折アクセスがあることに気が付きました。

表計算ソフトExcelを操作するPythonの外部ライブラリ「xlwings」を使って、セルの塗りつぶし色・背景色を取得・設定するにはどのようなコードを書けばいいのか調べていた方による検索でしょうか。

xlwingsでセルの塗りつぶし色・背景色を操作するサンプル

以下のスクリプトを実行してみてください。

import xlwings as xw

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)

print('A3セルの背景色:', sht.range('A3').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プロパティ

私は便利に感じます。

最終更新日時:2023-10-13 12:47

[スポンサードリンク]

Home » Python » xlwingsの使い方 » xlwingsでセルの塗りつぶし色・背景色を操作する-Range.colorプロパティ

「xlwingsの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.