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

使用openpyxl批量设置单元格字体与值报错,求解决方案

OpenPyXL设置单元格字体报错解决

我正在阅读《Python编程:快速上手——让繁琐工作自动化》,尝试修改书中代码为A1到A99的单元格设置字体并赋值,但运行时持续报错。

原代码

import openpyxl as xl
from openpyxl.styles import Font 

wb = xl.Workbook()
sheet = wb["Sheet"]

italic24Font = Font(size=18, italic = True) # 创建字体样式,返回Font对象

for rowNum in range(1,100):
  cell = sheet.cell(row=rowNum, column=1)
  sheet[cell].font = italic24Font
  sheet[cell] = "what is happing?"

wb.save("idk.xlsx")

报错信息(翻译后)

Traceback (most recent call last):
  File "c:\Users\JO\Desktop\Automate the boaring stuff\Chapter_13_Excel\projects\other\testing.py", line 12, in <module>
    sheet[cell].font = italic24Font
  File "C:\Users\JO\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\openpyxl\worksheet\worksheet.py", line 290, in __getitem__
    min_col, min_row, max_col, max_row = range_boundaries(key)
  File "C:\Users\JO\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\openpyxl\utils\cell.py", line 133, in range_boundaries
    m = ABSOLUTE_RE.match(range_string)
TypeError: expected string or bytes-like object

报错原因

sheet[]仅接受单元格地址字符串(如"A1")或单元格范围字符串,你传入的是cell对象,导致程序无法解析,抛出类型错误。

修正后的代码

import openpyxl as xl
from openpyxl.styles import Font 

wb = xl.Workbook()
sheet = wb["Sheet"]

italic24Font = Font(size=18, italic=True)

for rowNum in range(1, 100):
    cell = sheet.cell(row=rowNum, column=1)
    cell.font = italic24Font  # 直接操作cell对象的font属性
    cell.value = "what is happening?"  # 直接给cell对象赋值

wb.save("idk.xlsx")

说明

  • sheet.cell(row=rowNum, column=1)已经返回目标单元格对象,直接修改该对象的font和value属性即可完成设置。
  • 如果想用sheet[]语法,可改为sheet[f"A{rowNum}"],但直接操作cell对象更高效直观。

内容的提问来源于stack exchange,提问作者Mr.IDK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:25:01