Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas `to_excel` set font name

Is it possible to set the font name with pandas' excel writer?

Here is my attempt:

import pandas as pd
from pandas.io.excel import ExcelWriter

df = pd.DataFrame([[1,2,3],[4,5,6]])
writer = ExcelWriter("test.xlsx")
writer.set_font_name("Arial")  # this would be ideal, but no such method exists

format = writer.book.add_format({"font_name": "Arial"})
df.to_excel(writer)  # format is not applied. Need to pass `format` object somewhere

writer.close()

Where can I pass the xlsxwriter.format.Format object once it has been created?

like image 521
gozzilli Avatar asked Oct 29 '25 11:10

gozzilli


1 Answers

UPDATE: using a solution similar to @miradulo's solution we can make it working for different versions of Pandas:

try:
    import pandas.io.formats.excel as fmt_xl     # version >= 0.20
except ImportError:
    try:
        import pandas.formats.format as fmt_xl   # 0.18 <= version < 0.20
    except ImportError:
        import pandas.core.format as fmt_xl      # version < 0.18

df = pd.DataFrame([[1,2,3],[4,5,6]], columns=list('abc'))

fmt_xl.header_style = None

writer = pd.ExcelWriter("d:/temp/test.xlsx")

df.to_excel(writer, index= False)

workbook  = writer.book
worksheet = writer.sheets['Sheet1']

fmt = writer.book.add_format({"font_name": "Arial"})
worksheet.set_column('A:Z', None, fmt)
worksheet.set_row(0, None, fmt)

writer.save()

XlsxWriter Docs: Working with Python Pandas and XlsxWriter

like image 100
MaxU - stop WAR against UA Avatar answered Oct 31 '25 02:10

MaxU - stop WAR against UA



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!