John
John

Reputation: 771

How to wrap text in the header with excelwriter?

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.

Upvotes: 4

Views: 3096

Answers (1)

Merelda
Merelda

Reputation: 1338

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'])

Upvotes: 3

Related Questions