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

Python xlsxwriter如何为不同单元格设置唯一填充颜色

问题原因

xlsxwriter 中的 Format 格式对象是工作簿级别的全局共享对象,所有引用该对象的单元格会同步继承它的所有属性。你反复修改同一个 cell_format 的背景色时,之前已经应用过该格式的单元格会同步更新为最新的属性值,所以最终所有单元格都会显示最后一次设置的填充色。

解决方法

为每一种不同的填充色单独创建独立的 Format 对象,不要复用同一个格式对象修改属性。

基础实现代码

import xlsxwriter

wb = xlsxwriter.Workbook('example_color.xlsx')
ws = wb.add_worksheet()

# 每个颜色单独创建对应的格式对象
red_format = wb.add_format({'bg_color': 'red'})
green_format = wb.add_format({'bg_color': 'green'})
blue_format = wb.add_format({'bg_color': 'blue'})

# 写入单元格时绑定对应格式
ws.write(0, 0, "red", red_format)
ws.write(0, 1, "green", green_format)
ws.write(0, 2, "blue", blue_format)

wb.close()

批量场景优化

如果需要处理大量不同颜色,可提前构造颜色-格式的映射字典,避免重复创建相同颜色的格式对象:

import xlsxwriter

wb = xlsxwriter.Workbook('example_color.xlsx')
ws = wb.add_worksheet()

# 提前定义需要用到的所有颜色,批量生成格式映射
color_list = ['red', 'green', 'blue', 'yellow', 'orange', 'gray']
color_format_map = {
    color: wb.add_format({'bg_color': color}) 
    for color in color_list
}

# 批量写入单元格
for col_idx, color in enumerate(color_list):
    ws.write(0, col_idx, color, color_format_map[color])

wb.close()

内容的提问来源于stack exchange,提问作者user254340

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:36:04