全体まとめページは↓より。
やりたいこと
・セルを塗りつぶす
・複数の色で塗り分ける
フォルダ構成
VSCodeで実行するときはprg配下を開いてpyファイルを作り実行する。
実装
import os
import openpyxl
from openpyxl.styles import PatternFill
#ファイル名を入力させる
print("ファイル名を入力:")
filename = input()
#出力ファイルパスを作成
outfile_path = os.path.join("..\outdata" , filename)
#出力ファイルのオブジェクトを生成
owb = openpyxl.Workbook()
osh = owb.active
#塗りつぶしのオブジェクトを生成
fill = PatternFill(patternType="solid", fgColor="00FFFF00")
fill_1 = PatternFill(patternType="solid", fgColor="0000FFFF")
#セルの色を塗りつぶし
osh["b2"].fill = fill
osh["c3"].fill = fill_1
#出力ファイルを保存
owb.save(outfile_path)
出力結果
fillオブジェクト、fill_1オブジェクトで指定した色で塗りつぶされている。
ちなみに
ファイルを読み込んで、出力先の別ファイルに塗りつぶし色を反映させようとするとエラーになる。
#読み込みファイルパスを作成
infile_path = os.path.join("..\indata" , filename)
#読み込みファイルからオブジェクトを生成
iwb = openpyxl.load_workbook(infile_path)
ish = iwb.active
#読み込みファイルの塗りつぶし色を反映
osh["d4"].fill = ish["d4"].fill
TypeError: unhashable type: 'StyleProxy'
塗りつぶしやフォント情報までは(少なくとも標準の)読み込みデータには保持されていない、ということだと思われる。
以上