Pythonでエクセル(Excel)データのセルに色をつけたい

Excelに色を付けることはできますが、セルのキーをもとに色を付けたいときがありますよね。今回はそのコードのご紹介です。

def iro(file_name):
    df = pd.read_excel(file_name).dropna(axis=1)
    df["iro"]=df.duplicated(["part_number"])
    a = 0
    for i in range(len(df)):
        if df.loc[i,"iro"] == False:
            a += 1
            df.loc[i,"iro_num"] = int(a %2) #2で割ったあまりで色を判別
        else :
            df.loc[i,"iro_num"] = int(a %2) #2で割ったあまりで色を判別
    df.to_excel(file_name)


    wb = openpyxl.load_workbook(file_name)
    ws = wb.worksheets[0]

    #ライブラリの設定
    from openpyxl.styles import PatternFill

    #最終行と最終列を取得
    lastrow = ws.max_row
    lastcol = ws.max_column

    #各セルの値を取得
    for row in range(1, lastrow+1):
    #         for col in range(1, lastcol+1): #なぜ1を足すかはあとで調べる
                val = ws.cell(row= row, column= 11).value
                # 値が0なら、セルを灰色にする
                if val == 0:
                    for a in range(1,lastcol+1):
                        ws.cell(row=row, column= a).fill = PatternFill(patternType='solid', fgColor='d3d3d3')
                    # 値が1なら、セルを白色にする(≒なにもしない)
    wb.save(file_name)

iroという関数にしています。引数はファイル名です。フォルダ内にあるファイルを読み込んでセルの値をもとに色を付けるコードです。

ちょっとしょぼいんですが、一度エクセルデータを読み込んで「0」と「1」を付ける処理をしています。int(a %2)で、2で割ったあまりを付け加えています。

次にPatternFillライブラリを用いて色をつけてファイルに書き出すという処理を加えています。色を付けたい人は 「#ライブラリの設定」から後半のコードを参考にしてもらえればよいかと思います。

コメント

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