【问题标题】:Pandas `to_excel` set font namePandas `to_excel` 设置字体名称
【发布时间】:2017-09-13 06:10:46
【问题描述】:

是否可以用 pandas 的 excel writer 设置字体名称?

这是我的尝试:

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()

xlsxwriter.format.Format 对象创建后我可以在哪里传递它?

【问题讨论】:

    标签: python excel pandas xlsxwriter


    【解决方案1】:

    更新:使用类似于@miradulo's solution 的解决方案,我们可以使其适用于不同版本的 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 文档:Working with Python Pandas and XlsxWriter

    【讨论】:

    • 这几乎是完美的:它适用于除标题样式之外的所有内容:即使使用您建议的行 (pd.formats.format.header_style = None),我仍然得到默认的 pandas 粗体和 calibri。我也尝试在创建作家之前定义标题样式,但我仍然得到相同的结果。
    • @gozzilli,它对我来说工作正常。你的 Pandas 版本是什么?
    • MacOSX 上的 0.19.2
    • @gozzilli,尝试执行pd.formats.format.header_style = None 之前 df.to_excel
    • 不能在 pandas 0.23.4 上远程工作 - 'pandas' 没有属性 'formats','Workbook' 没有属性 'add_format'
    猜你喜欢
    • 2021-10-19
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2018-09-05
    • 2020-03-10
    • 2018-05-18
    相关资源
    最近更新 更多