def column_index_from_string(column, fast=False): """Convert a column letter into a column number (e.g. B -> 2) Excel only supports 1-3 letter column names from A -> ZZZ, so we restrict our column names to 1-3 characters, each in the range A-Z. .. note:: Fast mode is faster but does not check that all letters are capitals between A and Z """ column = column.upper() clen = len(column) if not fast and not all("A" <= char <= "Z" for char in column): msg = "Column string must contain only characters A-Z: got %s" % column raise ColumnStringIndexException(msg) if clen == 1: return ord(column[0]) - 64 elif clen == 2: return ((1 + (ord(column[0]) - 65)) * 26) + (ord(column[1]) - 64) elif clen == 3: return ((1 + (ord(column[0]) - 65)) * 676) + ((1 + (ord(column[1]) - 65)) * 26) + (ord(column[2]) - 64) elif clen > 3: raise ColumnStringIndexException("Column string index can not be longer than 3 characters") else: raise ColumnStringIndexException("Column string index can not be empty")
def column_index_from_string(column, fast=False): """Convert a column letter into a column number (e.g. B -> 2) Excel only supports 1-3 letter column names from A -> ZZZ, so we restrict our column names to 1-3 characters, each in the range A-Z. .. note:: Fast mode is faster but does not check that all letters are capitals between A and Z """ column = column.upper() clen = len(column) if not fast and not all('A' <= char <= 'Z' for char in column): msg = 'Column string must contain only characters A-Z: got %s' % column raise ColumnStringIndexException(msg) if clen == 1: return ord(column[0]) - 64 elif clen == 2: return ((1 + (ord(column[0]) - 65)) * 26) + (ord(column[1]) - 64) elif clen == 3: return ((1 + (ord(column[0]) - 65)) * 676) + ( (1 + (ord(column[1]) - 65)) * 26) + (ord(column[2]) - 64) elif clen > 3: raise ColumnStringIndexException( 'Column string index can not be longer than 3 characters') else: raise ColumnStringIndexException( 'Column string index can not be empty')
def absolute_coordinate(coord_string): """Convert a coordinate to an absolute coordinate string (B12 -> $B$12)""" parts = ABSOLUTE_RE.match(coord_string).groups() if all(parts[-2:]): return "$%s$%s:$%s$%s" % (parts[0], parts[1], parts[3], parts[4]) else: return "$%s$%s" % (parts[0], parts[1])
def absolute_coordinate(coord_string): """Convert a coordinate to an absolute coordinate string (B12 -> $B$12)""" parts = ABSOLUTE_RE.match(coord_string).groups() if all(parts[-2:]): return '$%s$%s:$%s$%s' % (parts[0], parts[1], parts[3], parts[4]) else: return '$%s$%s' % (parts[0], parts[1])