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

使用XlsxWriter修改已有工作表背景色时避免覆盖单元格内容

解决XlsxWriter修改单元格背景色时清除原有内容的问题
  • XlsxWriter是只写型库,无法读取已存在单元格的内容,所以直接用write_string写入空值覆盖的方式,必然会清除原有单元格内容。

  • 若你是从头生成Excel文件,正确做法是在第一次写入内容时就应用格式,而非事后补加。示例代码:

# 先定义奇偶行的背景色格式
cell_format_odd = workbook.add_format({'bg_color': '#D9D9D9'})
cell_format_even = workbook.add_format({'bg_color': '#FFFFFF'})

# 写入内容时直接绑定对应格式,保留原有内容
for row in range(rowCount, 200):
    # 假设原有内容存储在data二维列表中,根据实际情况替换
    for col in range(10):
        # 行存在内容则取对应值,无内容则为空字符串
        content = data[row][col] if row < len(data) else ""
        if row % 2 == 0:
            worksheet.write_string(row, col, content, cell_format_odd)
        else:
            worksheet.write_string(row, col, content, cell_format_even)
  • 若要修改已存在的Excel文件,XlsxWriter不支持读写操作,需使用支持读写的库(如openpyxl)。示例代码:
from openpyxl import load_workbook
from openpyxl.styles import PatternFill

# 加载目标Excel文件
wb = load_workbook('your_target_file.xlsx')
ws = wb.active

# 定义奇偶行的背景填充样式
fill_odd = PatternFill(start_color='D9D9D9', end_color='D9D9D9', fill_type='solid')
fill_even = PatternFill(start_color='FFFFFF', end_color='FFFFFF', fill_type='solid')

# 遍历目标行范围,修改背景色同时保留原有内容
# 注意:openpyxl的行、列编号从1开始
for row in range(rowCount + 1, 201):
    for col in range(1, 11):
        cell = ws.cell(row=row, column=col)
        if row % 2 == 0:
            cell.fill = fill_odd
        else:
            cell.fill = fill_even

# 保存修改后的文件
wb.save('modified_file.xlsx')

内容的提问来源于stack exchange,提问作者Nicols.S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:25:38