本記事では、PythonのライブラリであるpandasからExcelファイルへ出力する際に、セル内改行や行または列の幅などを指定して出力する方法について説明します。
1. StyleFrameの準備
StyleFrame
というライブラリを利用することでpandas
のto_excel
によって作成されるExcelファイルの書式を制御できます。
以下のようにコンソールからStyleFrame
をインストールします。
pip3 install StyleFrame
続いて、Pythonのコンソールから以下のようにimport
します。
from styleframe import StyleFrame, Styler, utils
これにより、引数の関数の実行前後に処理を追加することができます。
2. 列の幅を指定してExcelに出力する
列の幅を指定する場合を例に、StyleFrame
を利用する方法を示します。
# with構文でStyleFrameからファイルを開きます with StyleFrame.ExcelWriter(f"summary.xlsx") as writer: # 出力したいpandasのdataframeをStyleFrameオブジェクトに変換します sf = StyleFrame(df) # 列番号とその列の幅を以下のように指定します(一番左の列の番号は1から始まることに注意します) sf.set_column_width(columns=[1], width=14) sf.set_column_width(columns=[2, 3], width=80) # Excelファイルとして書き出します。 sf.to_excel(writer, sheet_name='test', index=False)
3. セル内で改行させる
pandasのdataframeの各セルに/n
を含めてto_excel
をし、得られたファイルをExcelから開いても/n
の部分は改行されずに表示されてしまいます。
/n
の部分で改行された状態で表示させるためには、以下のようにStyleFrame
を利用します。
# with構文でStyleFrameからファイルを開きます with StyleFrame.ExcelWriter(f"summary.xlsx") as writer: # 出力したいpandasのdataframeをStyleFrameオブジェクトに変換します sf = StyleFrame(df_pred_105) # 改行させるStyle objectを作成しておきます。 wrap_text_style = Styler(wrap_text=True) # 列名を指定し、その列に対して上記のStyleを指定することで、該当列の/nが有効になります。 sf.apply_column_style(cols_to_style=['列1', '列2'], styler_obj=wrap_text_style) # Excelファイルとして書き出します。 sf.to_excel(writer, sheet_name='test', index=False)
3. まとめ
本記事ではStaleFrame
を利用したPythonのPandasからExcelの書式まで指定して出力する方法を示しました。
以上になります。
コメント