python - type - pandas xlsxwriter, encabezado de formato
xlsxwriter cell type (3)
Creo que primero necesitas restablecer el estilo de encabezado predeterminado, luego puedes cambiarlo:
pd.core.format.header_style = None
Todos juntos:
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()
Explicando por jmcnamara , gracias:
En Excel, un formato de celda anula un formato de fila anula un formato de columna. El pd.core.format.header_style
se convierte a un formato y se aplica a cada celda del encabezado. Como tal, el valor predeterminado no puede ser anulado por set_row()
. Establecer pd.core.format.header_style
en None
significa que las celdas del encabezado no tienen un formato definido por el usuario y, por lo tanto, puede ser reemplazado por set_row()
.
EDITAR: En la versión 0.18.1
tienes que cambiar
pd.core.format.header_style = None
a:
pd.formats.format.header_style = None
EDIT: desde la versión 0.20 esto cambió de nuevo
import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None
gracias krvkir
Estoy guardando pandas DataFrame to_excel usando xlsxwriter. Me las arreglé para formatear todos mis datos (establecer el ancho de la columna, el tamaño de la fuente, etc.) excepto para cambiar la fuente del encabezado y no puedo encontrar la manera de hacerlo. Aquí está mi ejemplo:
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()
La penúltima línea que intenta establecer el formato para el encabezado no hace nada.
En los pandas 0.20 la solución de la respuesta aceptada cambió nuevamente.
El formato que se debe establecer en Ninguno se puede encontrar en:
pandas.io.formats.excel.header_style
Una actualización para cualquiera que llegue a esta publicación y esté utilizando Pandas 0.20.1.
Parece que el código requerido es ahora
import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None
Aparentemente, el submódulo de excel
no se importa automáticamente, por lo que simplemente intentar pandas.io.formats.excel.header_style = None
solo generará un AttributeError
.