EXCEL列名、字母互相转换

52 阅读1分钟
def _get_column_letter(col_idx):
    if not 1 <= col_idx <= 18278:
        raise ValueError("Invalid column index {0}".format(col_idx))
    letters = []
    while col_idx > 0:
        col_idx, remainder = divmod(col_idx, 26)
        # check for exact division and borrow if needed
        if remainder == 0:
            remainder = 26
            col_idx -= 1
        letters.append(chr(remainder+64))
    return ''.join(reversed(letters))
def _column_index_from_string(column_name='BBA'):
    list_str =list(column_name.upper())
    #print(list_str)
    c_index=0
    len_s=len(list_str)
    for i in range(len_s):
        d=ord(list_str[i])-64
        c_index+=d*pow(26,len_s-1-i)
    return c_index