概要
- 客先がExcelシートでヒートマップを見たがっていた。
- openpyxlだと、実装できなかった。(やり方が悪かった?)
- xlsxwriterをpandasのto_excelのengineとして使用
- 条件付き書式設定をxlsxwriterで行う
- セル指定は、
xl_range
を用いる。(セルを数値で指定)
ソースコード
全体
# xl_rangeを使えば、"B2:C3"をxl_range(2,2,3,3)と表現できる。
from xlsxwriter.utility import xl_range
import xlsxwriter
import pandas as pd
import numpy as np
# test用データフレーム
df = pd.DataFrame(np.arange(0,9,1).reshape(3,3))
# workbook生成
workbook = xlsxwriter.Workbook(r'./output_storage/hoge.xlsx')
# xlsxwriterでは、mode='a'は使えない。
writer = pd.ExcelWriter(r'./output_storage/hoge.xlsx',mode='w',engine='xlsxwriter')
sheet_name = 'hoge'
# データフレームをシートに書き込む
df.to_excel(writer,sheet_name=sheet_name,startrow=0,index_label='huga')
# 条件付き書式の設定
ws = writer.sheets[sheet_name]
ws.conditional_format(xl_range(2,2,3,3),
{'type': '3_color_scale',
'min_color': "#44c242",
'mid_color': "#ebeb44",
'max_color': "#eb4444"})
writer.close()
まとめ
- Excelでほしがるお客さんがまだまだ多いため、勉強する必要があるかもしれない。
- pandasとの親和性もよく、比較的柔軟に対応できそうだった。