PythonでExcel自動操作:セルの色を塗りつぶす

全体まとめページは↓より。

やりたいこと

・セルを塗りつぶす
・複数の色で塗り分ける

フォルダ構成

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'

塗りつぶしやフォント情報までは(少なくとも標準の)読み込みデータには保持されていない、ということだと思われる。

以上

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