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

Python能否读取含背景色格式的Excel模板?求可行解决方案

可用的Python Excel格式读取模块推荐

你提到的需求完全可以实现,以下几个模块能帮你读取Excel模板的单元格格式(背景色、字体样式等),同时支持填充内容保留原有格式:

openpyxl

这是处理xlsx格式的主流库,其实它完全支持读取单元格样式,你之前可能没用到正确的用法。它能直接获取填充色、字体加粗状态、单元格内容等信息,跨平台且无需依赖本地Excel。

示例代码:

from openpyxl import load_workbook

# 加载模板文件
wb = load_workbook("你的模板文件.xlsx")
ws = wb.active

# 获取A1单元格的相关信息
cell = ws['A1']
# 背景色(十六进制值)
bg_color = cell.fill.fgColor.rgb
# 字体是否加粗
is_bold = cell.font.bold
# 单元格原有内容
origin_value = cell.value

# 填充新内容,保留格式
cell.value = "新的填充内容"

# 保存修改后的文件
wb.save("填充后的文件.xlsx")

xlrd

如果需要处理旧版xls格式的模板,可以用xlrd。注意xlrd 2.0及以上版本不再支持xlsx,若要处理xlsx需安装2.0以下版本(如pip install xlrd==1.2.0)。它能读取格式索引并解析出对应的样式信息。

示例代码:

import xlrd

# 加载模板,需开启formatting_info参数
wb = xlrd.open_workbook("你的模板文件.xls", formatting_info=True)
ws = wb.sheet_by_index(0)

# 获取A1单元格的格式索引
xf_idx = ws.cell_xf_index(0, 0)
xf = wb.xf_list[xf_idx]

# 解析背景色
fill_color = wb.format_map[xf.background.pattern_colour_index]
# 解析字体加粗状态
font = wb.font_list[xf.font_index]
is_bold = font.bold
# 单元格原有内容
origin_value = ws.cell_value(0, 0)

win32com.client

如果你的运行环境是Windows且安装了本地Excel,这个模块能调用Excel的COM接口,读取所有复杂格式(包括条件格式、合并单元格样式等),兼容性拉满,但仅限Windows平台。

示例代码:

import win32com.client as win32

# 启动Excel应用(后台运行)
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False  # 设为True可看到Excel窗口

# 打开模板文件
wb = excel.Workbooks.Open(r"你的模板文件.xlsx")
ws = wb.ActiveSheet

# 获取A1单元格信息
cell = ws.Range("A1")
# 背景色(RGB数值,可转十六进制)
bg_color = cell.Interior.Color
# 字体是否加粗
is_bold = cell.Font.Bold
# 原有内容
origin_value = cell.Value

# 填充新内容
cell.Value = "新的填充内容"

# 保存并关闭
wb.SaveAs("填充后的文件.xlsx")
wb.Close(False)
excel.Quit()

总结

  • 优先选openpyxl:跨平台、原生支持xlsx、API友好,满足大部分普通格式需求;
  • 处理xls格式用xlrd(注意版本限制);
  • 需要复杂格式兼容或Windows环境下用win32com.client。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:10:29