def _generate_selector(self, start_col, end_col, start_row, end_row): start = '%s%d' % (col_name(start_col), start_row + 1) end = '%s%d' % (col_name(end_col), end_row + 1) if start != end: return '%s.%s:%s' % (self.sheet.Name, start, end) else: return '%s.%s' % (self.sheet.Name, start)
def __init__(self, selector = None, _row_sliced = False): """ Constructor gets a selector as parameter. Selector can be one of the following forms: a10 a1:10 a1:b3 Sheet2.a10 Sheet3.a1:10 SheetX.a1:g10 Selector is case-insensitive """ super(OOSheet, self).__init__() if not selector: address = self.model.CurrentSelection.RangeAddress self.sheet = self.model.Sheets.getByIndex(address.Sheet) self.start_col = address.StartColumn self.end_col = address.EndColumn self.start_row = address.StartRow self.end_row = address.EndRow return try: sheet_name, cells = selector.split('.') self.sheet = self.model.Sheets.getByName(sheet_name) except ValueError: self.sheet = self.model.Sheets.getByIndex(0) cells = selector cells.replace('$', '') cells = cells.upper() if ':' in cells: (start, end) = cells.split(':') if not re.match('^[A-Z]', end): col, row = self._position(start) end = ''.join([col_name(col), end]) self.start_col, self.start_row = self._position(start) self.end_col, self.end_row = self._position(end) else: col, row = self._position(cells) self.start_col, self.end_col = col, col self.start_row, self.end_row = row, row self._row_sliced = _row_sliced