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

使用xlsxwriter操作Excel时报Worksheet无cell属性错误如何解决

报错原因

报错本质是混用了不同Excel处理库的接口,API不匹配:

  • 你初始化写入对象时指定engine='xlsxwriter',此时writer.sheets['Sheet1']返回的是xlsxwriter库的Worksheet实例,这个类本身没有cell()方法,cell()是openpyxl库操作单元格的专属接口。
  • 你代码里调用的Font样式类也是openpyxl提供的,和xlsxwriter的样式定义逻辑完全不兼容,无法直接跨库使用。
修复方案

你可以根据自己的使用习惯二选一:

方案1:适配xlsxwriter引擎的原生写法(无需更换依赖)

xlsxwriter要求样式提前通过工作簿对象的add_format方法注册,再绑定到对应单元格,注意xlsxwriter的行列索引从0开始计数。
修正后代码:

import pandas as pd

# 初始化写入对象
writer = pd.ExcelWriter(path, engine='xlsxwriter')
# 替换df为你自己的DataFrame变量名,先把数据写入工作表
df.to_excel(writer, sheet_name='Sheet1', index=False)

worksheet = writer.sheets['Sheet1']
# 定义目标字体样式
col_style = writer.book.add_format({
    'font_name': 'Reem Kufi',
    'font_size': 12,
    'font_color': '#DB3B22',
    'italic': True
})

# 遍历设置第2-39行、第3列的单元格样式(对应xlsxwriter行索引1-38,列索引2)
for row_idx in range(1, 39):
    # 传入None代表保留单元格原有值,仅覆盖样式
    worksheet.write(row_idx, 2, None, col_style)

# 如果不想写循环,也可以直接对指定区域批量设置样式,效率更高
# worksheet.conditional_format('C2:C39', {'type': 'no_errors', 'format': col_style})

writer.close()

方案2:更换引擎为openpyxl,复用你原有逻辑

如果你更习惯openpyxl的单元格操作语法,直接把写入引擎换成openpyxl即可,注意提前安装openpyxl依赖。这种方式下你原来写的行、列索引(从1开始计数)不需要调整。
修正后代码:

import pandas as pd
from openpyxl.styles import Font

# 更换引擎为openpyxl
writer = pd.ExcelWriter(path, engine='openpyxl')
# 替换df为你自己的DataFrame变量名,写入数据
df.to_excel(writer, sheet_name='Sheet1', index=False)

worksheet = writer.sheets['Sheet1']
col_style = Font(name="Reem Kufi", size=12, color="DB3B22", italic=True)

# 原有循环逻辑不需要修改
for i in range(2, 40):
    worksheet.cell(row=i, column=3).font = col_style

writer.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:12:29