You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用xlwings修改Pandas DataFrame导出Excel的格式,将***内容设为红色字体?

在xlwings中设置DataFrame导出Excel的格式(***值显示红色字体)

当然可以实现这个需求!你需要在将DataFrame写入Excel后,借助xlwings的API定位目标单元格并设置字体格式。下面是两种实用的实现方案,你可以根据场景选择:

方案1:使用条件格式(高效推荐)

这种方法的优势是自动生效——如果后续Excel中单元格的值被改为***,字体也会自动变成红色,适合需要动态更新的场景:

import pandas as pd
import xlwings as xw

# 初始化你的DataFrame
data1 = [['Alex','***'],['Bob',12],['***',13]]
df1 = pd.DataFrame(data1,columns=['Name','Age'])

# 打开Excel工作簿并写入数据
wb = xw.Book()
summ = wb.Sheets["1"]  # 保持你原有的sheet名称
start_cell = summ.range('C17')
# 将DataFrame写入指定位置(不包含表头)
start_cell.options(header=False).value = df1

# 获取写入的完整数据区域
data_range = start_cell.expand('table')

# 添加条件格式:匹配值为"***"的单元格,设置字体为红色
# Type=1代表基于单元格值的条件,Operator=2代表"等于"
data_range.api.FormatConditions.Add(Type=1, Operator=2, Formula1='"***"')
# ColorIndex=3对应Excel中的红色(你也可以用RGB值自定义颜色)
data_range.api.FormatConditions(data_range.api.FormatConditions.Count).Font.ColorIndex = 3

方案2:遍历单元格设置格式(一次性生效)

如果只需要对现有DataFrame中的***值设置格式,后续不需要动态更新,可以直接遍历单元格设置:

import pandas as pd
import xlwings as xw

# 初始化你的DataFrame
data1 = [['Alex','***'],['Bob',12],['***',13]]
df1 = pd.DataFrame(data1,columns=['Name','Age'])

# 打开Excel工作簿并写入数据
wb = xw.Book()
summ = wb.Sheets["1"]
start_cell = summ.range('C17')
start_cell.options(header=False).value = df1

# 获取完整数据区域
rows, cols = df1.shape
data_range = start_cell.resize(rows, cols)

# 遍历每个单元格,匹配到"***"就设置红色字体
for cell in data_range:
    if cell.value == '***':
        # 使用RGB值设置红色字体
        cell.font.color = (255, 0, 0)

注意事项

  • 确保你的sheet名称正确(你代码中写的是"1",如果是默认的Sheet1需要修改)
  • ColorIndex=3是Excel内置的红色索引,你也可以用RGB值(255,0,0)自定义颜色,两种方式都生效
  • 条件格式方案更适合数据可能动态变化的场景,遍历方案则更直观,适合静态数据

内容的提问来源于stack exchange,提问作者Iago Sanchez Prieto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:35:57