Example #1
0
 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)
Example #2
0
    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