栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从列号获取Excel样式的列名

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从列号获取Excel样式的列名

编辑:我认为我必须承认,正如其他一些人(他们从未留下过我的评论)所指出的那样,我的答案的上一版本(您接受了)存在一个错误,该错误使其无法正确处理大于

702
(对应于Excel列
'ZZ'
)。因此,为了正确起见,以下代码已对其进行了修复,该代码现在像其他许多答案一样包含一个循环。

您很可能从未使用过具有足够大列号的先前版本来遇到此问题。FWIW,当前版本的Excel的MS规范说,它支持最多包含16,384列(Excel列

'XFD'
)的工作表。

LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'def excel_style(row, col):    """ Convert given row and column number to an Excel-style cell name. """    result = []    while col:        col, rem = divmod(col-1, 26)        result[:0] = LETTERS[rem]    return ''.join(result) + str(row)if __name__ == '__main__':    addresses = [(1,  1), (1, 26),      (1, 27), (1, 52),      (1, 53), (1, 78),      (1, 79), (1, 104),      (1, 18253), (1, 18278),      (1, 702),  # -> 'ZZ1'      (1, 703),  # -> 'AAA1'      (1, 16384), # -> 'XFD1'      (1, 35277039)]    print('({:3}, {:>10}) --> {}'.format('row', 'col', 'Excel'))    print('==========================')    for row, col in addresses:        print('({:3}, {:10,}) --> {!r}'.format(row, col, excel_style(row, col)))

输出:

(row,       col) --> Excel========================(  1,         1) --> 'A1'(  1,        26) --> 'Z1'(  1,        27) --> 'AA1'(  1,        52) --> 'AZ1'(  1,        53) --> 'BA1'(  1,        78) --> 'BZ1'(  1,        79) --> 'CA1'(  1,       104) --> 'CZ1'(  1,     18253) --> 'ZZA1'(  1,     18278) --> 'ZZZ1'(  1,       702) --> 'ZZ1'(  1,       703) --> 'AAA1'(  1,     16384) --> 'XFD1'(  1,  35277039) --> 'BYEBYE1'


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/617819.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号