Convert spreadsheet number to column letter

前端 未结 13 1228
太阳男子
太阳男子 2020-11-30 05:47

I\'m looking for the opposite to this Q&A: Convert an excel or spreadsheet column letter to its number in Pythonic fashion.

or this one but in python How to conv

13条回答
  •  暖寄归人
    2020-11-30 06:20

    Just to complicate everything a little bit I added caching, so the name of the same column will be calculated only once. The solution is based on a recipe by @Alex Benfica

    import string
    
    
    class ColumnName(dict):
        def __init__(self):
            super(ColumnName, self).__init__()
            self.alphabet = string.uppercase
            self.alphabet_size = len(self.alphabet)
    
        def __missing__(self, column_number):
            ret = self[column_number] = self.get_column_name(column_number)
            return ret
    
        def get_column_name(self, column_number):
            if column_number <= self.alphabet_size:
                return self.alphabet[column_number - 1]
            else:
                return self.alphabet[((column_number - 1) / self.alphabet_size) - 1] + self.alphabet[((column_number - 1) % self.alphabet_size)]
    

    Usage example:

    column = ColumnName()
    
    for cn in range(1, 40):
        print column[cn]
    
    for cn in range(1, 50):
        print column[cn]
    

提交回复
热议问题