Pandas设置DataFrame表头背景色后导出Excel不生效,求排查解决
问题原因
你用的set_table_style是针对HTML渲染场景的样式设置,写入Excel时pandas不会把这种HTML样式转换为Excel的单元格格式,所以表头背景色没生效。另外你原代码里的Excel路径拼写错误(documements应为documents),且to_excel语句缺少右括号,这些也会导致执行异常。
正确解决方法
以下两种方式都能实现Excel表头橙色背景的需求:
方法一:使用Styler的索引样式设置(推荐)
利用pandas Styler的apply_index方法专门针对列表头设置样式,写入Excel时样式会被正确转换:
import pandas as pd # 构造你的DataFrame data = { 'Campus': ['AZ', 'AZ1', 'AZ2', 'NV'], 'Server': ['server12', 'server12', 'server23', 'Server34'], 'Port': ['Eth1', 'Eth2', 'Gi2', 'Eth2'] } df = pd.DataFrame(data) # 给列表头设置橙色背景 df_styled = df.style.apply_index(lambda x: ['background-color: #FFA500']*len(x), axis=0) # 写入Excel,指定支持样式的引擎(openpyxl或xlsxwriter均可) with pd.ExcelWriter('C:/documents/output.xlsx', engine='openpyxl') as writer: df_styled.to_excel(writer, index=False)
方法二:通过ExcelWriter引擎手动设置格式
如果不想用Styler,也可以直接用xlsxwriter引擎自定义表头格式:
import pandas as pd data = { 'Campus': ['AZ', 'AZ1', 'AZ2', 'NV'], 'Server': ['server12', 'server12', 'server23', 'Server34'], 'Port': ['Eth1', 'Eth2', 'Gi2', 'Eth2'] } df = pd.DataFrame(data) with pd.ExcelWriter('C:/documents/output.xlsx', engine='xlsxwriter') as writer: df.to_excel(writer, index=False, sheet_name='Sheet1') workbook = writer.book worksheet = writer.sheets['Sheet1'] # 创建橙色背景的格式(可添加加粗等额外样式) header_format = workbook.add_format({ 'bg_color': '#FFA500', 'bold': True }) # 将格式应用到表头行(xlsxwriter的行索引从0开始,表头在第0行) for col_num, value in enumerate(df.columns.values): worksheet.write(0, col_num, value, header_format)
内容的提问来源于stack exchange,提问作者user1471980
相关产品推荐
相关产品推荐

