私はxlsxwriterを使用してpandas DataFrame to_Excelを保存しています。ヘッダーのフォントを変更する以外はすべてのデータ(列幅、フォントサイズの設定など)をフォーマットできました。私の例は次のとおりです。
import pandas as pd
data = pd.DataFrame({'test_data': [1,2,3,4,5]})
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
data.to_Excel(writer, sheet_name='test', index=False)
workbook = writer.book
worksheet = writer.sheets['test']
font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True})
worksheet.set_column('A:A', None, font_fmt)
worksheet.set_row(0, None, header_fmt)
writer.save()
ヘッダーの形式を設定しようとする最後から2番目の行は何もしません。
最初にデフォルトのヘッダースタイルをリセットする必要があり、それを変更できると思います:
_pd.core.format.header_style = None
_
すべて一緒に:
_import pandas as pd
data = pd.DataFrame({'test_data': [1,2,3,4,5]})
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
pd.core.format.header_style = None
data.to_Excel(writer, sheet_name='test', index=False)
workbook = writer.book
worksheet = writer.sheets['test']
font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True})
worksheet.set_column('A:A', None, font_fmt)
worksheet.set_row(0, None, header_fmt)
writer.save()
_
jmcnamara による説明、ありがとうございます:
Excelでは、セル形式が行形式をオーバーライドし、列形式をオーバーライドします。_pd.core.format.header_style
_は形式に変換され、ヘッダーの各セルに適用されます。そのため、set_row()
でデフォルトを上書きすることはできません。 _pd.core.format.header_style
_をNone
に設定すると、ヘッダーセルにユーザー定義のフォーマットがないため、set_row()
でオーバーライドできます。
編集:バージョン_0.18.1
_では、変更する必要があります
_pd.core.format.header_style = None
_
に:
_pd.formats.format.header_style = None
_
編集:バージョン0.20からこれは再び変更されました
_import pandas.io.formats.Excel
pandas.io.formats.Excel.header_style = None
_
ありがとう krvkir 。
この投稿に遭遇してPandas 0.20.1。
必要なコードは現在
import pandas.io.formats.Excel
pandas.io.formats.Excel.header_style = None
どうやらExcel
サブモジュールは自動的にインポートされないので、単にpandas.io.formats.Excel.header_style = None
単独でAttributeError
を発生させます。
pandas 0.20では、受け入れられた回答の解が再び変更されました。
Noneに設定する必要がある形式は、次の場所にあります。
pandas.io.formats.Excel.header_style
for pandas 0.24:
以下はもう機能しません:
import pandas.io.formats.Excel
pandas.io.formats.Excel.header_style = None
代わりに、次の擬似コードを使用して、自己制御と将来の証明を行います。
# [1] write df to Excel as usual
writer = pd.ExcelWriter(path_output, engine='xlsxwriter')
df.to_Excel(writer, sheet_name, index=False)
# [2] do formats for other rows and columns first
# [3] create a format object for the header: headercellformat
# [4] write to the header row **one cell at a time**, with columnname and format
for columnnum, columnname in enumerate(list(df.columns)):
worksheet.write(0, columnnum, columnname, headercellformat)