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

