pandas xlsxwriter, заголовок формата
Я сохраняю pandas DataFrame to_excel с помощью xlsxwriter. Мне удалось отформатировать все мои данные (задается ширина колонки, размер шрифта и т. д.), За исключением изменения шрифта заголовка и я не могу найти способ сделать это. Вот мой пример:
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()
предпоследняя строка, которая пытается установить формат для заголовка, ничего не делает.
3 ответов
Я думаю, вам нужно сначала сбросить стиль заголовка по умолчанию, затем вы можете изменить его:
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 формат ячейки переопределяет формат строки переопределяет формат столбца.The pd.core.format.header_style
преобразуется в формат и применяется к каждой ячейке в заголовке. Таким образом, значение по умолчанию не может быть переопределено set_row()
. Настройка pd.core.format.header_style
до None
означает, что ячейки заголовков. не имеют определенного пользователем формата, и поэтому его можно переопределить set_row()
.
EDIT: в версии 0.18.1
вы должны изменить
pd.core.format.header_style = None
в:
pd.formats.format.header_style = None
спасибо krvkir.
обновление для всех, кто сталкивается с этим сообщением и использует Pandas 0.20.1.
кажется, необходимый код
import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None
видимо excel
подмодуль не импортируется автоматически, поэтому просто попробуйте выдает AttributeError
.
в pandas 0.20 решение принятого ответа снова изменилось.
формат, который должен быть установлен в None, можно найти по адресу:
pandas.io.formats.excel.header_style