使用openpyxl操作Excel时报错A9不是有效坐标或范围是什么原因
openpyxl写入已有Excel文件报坐标无效的解决方案
报错核心原因
- 坐标字符串存在不可见空白:从报错信息
ValueError: A9 is not a valid coordinate or range可以看到A9和后续文字之间有多余空格,说明你拼接的坐标字符串末尾大概率带了不可见空白字符。可以先打印print(repr('A{0}'.format(str(row2sav))))确认输出,如果确实存在空白,用str(row2sav).strip()处理变量后再拼接坐标即可。 - 坐标拼接写法兼容问题:手动拼接坐标的写法容易受变量格式、openpyxl版本差异影响触发解析错误,推荐直接用
cell()方法操作单元格,从根源规避坐标解析问题,修改后代码如下:
# 替换原有坐标拼接写法 target_cell = ws.cell(row=row2sav, column=1, value=rowid) target_cell.fill = PatternFill(bgColor="#7EB33D", fill_type="solid")
- 工作表对象异常:可以加一行校验代码
print(ws.title, type(ws)),确认你拿到的ws确实是目标工作表对象,避免"fromger" in tipo的条件判断未按预期触发,导致ws指向错误对象。
打开方式说明
你目前的打开代码本身没有语法错误,但如果需要修改已有文件的单元格样式、保留原有公式,建议补充明确的参数配置,避免不同版本openpyxl默认参数差异带来的异常,修改后加载代码如下:
# 明确关闭只读模式、关闭仅读取值模式,保留原有文件的公式和格式配置 wb = load_workbook(os.path.join('Reports', filename_report), read_only=False, data_only=False)
额外排查点
- 确认目标Excel文件没有被其他程序(如Excel、WPS)打开占用,文件被锁定时openpyxl读写会出现不可预期的异常
- 确认工作表名称和你写的
Central to ChargeStation完全一致,没有多余前后空格、大小写差异
内容的提问来源于stack exchange,提问作者frepynow
相关产品推荐
相关产品推荐

