How to wrap text in the header with excelwriter?

Viewed 1077

I want to wrap the header text.

My code is as follows:

writer = pd.ExcelWriter(r'C:\data.xlsx', engine='xlsxwriter')
df.to_excel(writer, index = False, sheet_name='Sheet1')
workbook = writer.book
dformat = workbook.add_format({'text_wrap': True})
pd.io.formats.excel.header_style = None
worksheet = writer.sheets['Sheet1']
worksheet.set_row(0, None, dformat)
writer.save()

However, the first row, that is, the headers does not wrap.

How to solve it?

Furthermore, how to set a filter on a column, say, a filter of column value greater than 10?

Thank you.

1 Answers

When use pandas to write the header, pandas applies their own styling.

If you want to apply your own styling to the header, you can write the data and header separately.

# Write data

writer = pd.ExcelWriter(r'C:\data.xlsx', engine='xlsxwriter')
df.to_excel(writer, index=False, sheet_name='Sheet1', header=False, startrow=1)

# Write header

for colx, value in enumerate(df.columns.values):
    writer.sheets['Sheet1'].write(0, colx, value)

# Style header

header_format = workbook.add_format({'bold': True, 'text_wrap': True, 'align': 'center'})
writer.sheets['Sheet1'].set_row(0, 30, formats['text_wrap'])

Related