формат text_wrap игнорируется при форматировании листа - PullRequest
1 голос
/ 15 марта 2019

Перенос текста у меня не работает. Я попробовал следующий код:

writer = pd.ExcelWriter(out_file_name, engine='xlsxwriter')
df_input.to_excel(writer, sheet_name='Inputs')
workbook  = writer.book
worksheet_input = writer.sheets['Inputs']
header_format = workbook.add_format({
        'bold': True,
        'text_wrap': True})

# Write the column headers with the defined format.
worksheet_input.set_row(1,45,header_format )

Вот скриншот моего результата

enter image description here

Перенос текста у меня не работает. Я попробовал следующий код:

writer = pd.ExcelWriter(out_file_name, engine='xlsxwriter')
df_input.to_excel(writer, sheet_name='Inputs')
workbook  = writer.book
worksheet_input = writer.sheets['Inputs']
header_format = workbook.add_format({
        'bold': True,
        'text_wrap': True})

# Write the column headers with the defined format.
worksheet_input.set_row(1,45,header_format )

Вот скриншот моего результата

enter image description here

Получил ошибку ниже, используя решение / код @ amanb enter image description here

Мой фрейм выглядит примерно так

enter image description here

1 Ответ

1 голос
/ 15 марта 2019

Согласно официальной документации для Форматирование заголовков Dataframe :

Pandas записывает заголовок кадра данных с форматом ячейки по умолчанию. Поскольку это формат ячейки, его нельзя переопределить с помощью set_row () . Если вы хотите использовать свой собственный формат для заголовков, тогда лучше всего отключить автоматический заголовок от Pandas и написать свой собственный.

Итак, мы отключаем автоматический заголовок от Pandas и пишем наш собственный. Определенный header_format должен быть применен к каждому заголовку столбца в df_input и записан на лист. Следующее настроено в соответствии с вашими требованиями, и аналогичный пример показан в официальных документах.

# Turn off the default header and skip one row to allow us to insert a
# user defined header.
df_input.to_excel(writer, sheet_name='Inputs', startrow=1, header=False)

# Get the xlsxwriter workbook and worksheet objects.
workbook  = writer.book
worksheet = writer.sheets['Inputs']

# Add a header format.
header_format = workbook.add_format({
    'bold': True,
    'text_wrap': True})

# Write the column headers with the defined format.
for col_num, value in enumerate(df_input.columns.values):
    worksheet.write(0, col_num + 1, value, header_format)
...