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
相关产品推荐
相关产品推荐

