python - 数字和excel列名互转

def convert_to_number(letter, columnA=0):
    ab = '_ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    letter0 = letter.upper()
    w = 0
    for _ in letter0:
        w *= 26
        w += ab.find(_)
    return w - 1 + columnA
def convert_to_letter(number, columnA=0):
    ab = '_ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    n = number - columnA
    x = n % 26
    if n >= 26:
        n = int(n / 26)
        return convert_to_letter(n,1) + ab[x+1]
    else:
        return ab[x+1]
# 注意0转换后是列A
for i in range(0, 27):
    print(f'{convert_to_number(convert_to_letter(i))}-{convert_to_letter(i)}', end=' ')
# 0-A 1-B 2-C 3-D 4-E 5-F 6-G 7-H 8-I 9-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R 18-S 19-T 20-U 21-V 22-W 23-X 24-Y 25-Z 26-AA
posted @ 2024-11-13 20:07  wstong  阅读(9)  评论(0编辑  收藏  举报