这是在提供行和列ID时提供列名的代码,但是当我提供类似row = 1 and col = 104
的值时,它应该返回CZ
,但它返回D@
row = 1
col = 104
div = col
column_label = str()
while div:
(div, mod) = divmod(div, 26)
column_label = chr(mod + 64) + column_label
print column_label
我在做什么有什么问题?
(这段代码在EXCEL列的引用中,在这里我提供了行、列ID值,并期望相同的字母值。)
有几个索引问题:
因此,要解决问题,您需要使所有索引匹配:
编辑:我觉得我必须承认,正如其他一些从未给我留下评论的人所指出的,我的回答的前一个版本(您接受了)有一个错误,使它无法正确处理大于
702
(对应于Excel列'ZZ'
)的列号。所以,为了正确起见,下面的代码已经修复了这个问题,它现在包含了一个循环,就像许多其他答案一样。很可能您从未使用过列号足够大的前一个版本来遇到此问题。例如,MS specs for the current version of Excel说它支持多达16384列的工作表(Excel列
'XFD'
)。输出:
我喜欢maritineau的答案,因为它的代码看起来简单易懂。但不能处理大于26**2+26的列号。所以我修改了一部分。
结果
相关问题 更多 >
编程相关推荐