OpenPyXL的coordinate_to_tuple方法无法处理绝对地址的问题
OpenPyXL:如何从绝对单元格地址获取地址元组?
直接调用coordinate_to_tuple('$A$2')会触发KeyError,报错信息显示:无法找到键'$A$'。
已有的临时解决方法
- 使用
replace移除美元符号后调用coordinate_to_tuple:from openpyxl.utils import coordinate_to_tuple coord = coordinate_to_tuple('$A$2'.replace('$', '')) - 使用
range_boundaries方法截取结果:from openpyxl.utils import range_boundaries min_col, min_row, max_col, max_row = range_boundaries('$A$2') coord = (min_col, min_row) - 结合
coordinate_from_string和column_index_from_string转换:from openpyxl.utils import coordinate_from_string, column_index_from_string col_str, row = coordinate_from_string('$A$2') coord = (column_index_from_string(col_str), row)
官方规范解决方案
OpenPyXL的coordinate_from_string本身支持解析带美元符号的绝对地址,返回(列字符串,行号)的元组,再配合column_index_from_string将列字符串转为数字索引,这是官方推荐的标准处理流程——因为coordinate_to_tuple设计上仅接受不带绝对引用符号的纯坐标字符串,而coordinate_from_string专门负责解析各种格式的单元格地址(包括绝对、相对、混合引用)。
OpenPyXL并没有公开定义美元符号的常量,也没有专门的"抵消absolute_coordinate调用"的方法,absolute_coordinate是用来将相对地址转为绝对地址的,反向操作的标准方式就是通过coordinate_from_string解析地址。
如果追求代码规范性,优先选择第三种方法,它完全基于官方公开API,无需手动处理字符串替换,更适配OpenPyXL的设计逻辑。
内容的提问来源于stack exchange,提问作者Jeff G
相关产品推荐
相关产品推荐

