使用xlsxwriter修改Excel工作表正文为Arial 9号字体问题求助
问题排查
首先你的代码存在3处低级拼写错误,会先触发运行报错:
- 取工作表时名称不匹配:
to_excel指定的表名是Pipeline_Details(带下划线),后续取表写的是Pipeline Details(带空格),会找不到对应工作表 - 隐藏网格线的变量名拼写错误:
worksheer.hide_gridlines(2)应改为worksheet.hide_gridlines(2) - 表头格式创建方法拼写错误:
header_format = workbook_add.format应改为header_format = workbook.add_format
其次是正文格式不生效的核心原因:你仅定义了正文格式cell_format,但没有将该格式应用到任何正文单元格上,pandas调用to_excel写入正文时默认使用内置默认格式,不会自动关联你后续定义的格式。
解决方案
推荐直接修改工作簿全局默认字体,无需逐单元格设置,符合你修改默认字体的需求,修正后完整代码如下:
import pandas as pd import xlsxwriter # 初始化writer时指定xlsxwriter引擎 writer1 = pd.ExcelWriter('你的输出文件名.xlsx', engine='xlsxwriter') # 写入数据 Pipeline_details.to_excel(writer1, sheet_name ='Pipeline_Details', startrow=1, startcol=0, header=False, index=False) workbook = writer1.book # 全局设置默认字体为Arial 9号,所有单元格默认生效 workbook.set_default_font(font_name='Arial', font_size=9) worksheet = writer1.sheets['Pipeline_Details'] (max_row, max_col) = Pipeline_details.shape worksheet.autofilter(0,0,max_row, max_col - 1) worksheet.hide_gridlines(2) # 表头单独加特殊格式(自动换行,其他属性已经继承全局默认的Arial 9号) header_format = workbook.add_format({ 'bold': False, 'text_wrap': True}) for col_num, value in enumerate(Pipeline_details.columns.values): worksheet.write(0, col_num, value, header_format) writer1.save()
如果不需要全局修改,仅需要给当前表格正文加格式,可以在定义完cell_format后新增批量设置列格式的代码:
cell_format = workbook.add_format({'font_name': 'Arial', 'font_size': 9}) # 给所有列应用正文格式 worksheet.set_column(0, max_col-1, None, cell_format)
内容的提问来源于stack exchange,提问作者covershaker
相关产品推荐
相关产品推荐

