Пример #1
0
    def test_range_cols(self):
        section_range = list(ColumnHelper.get_range(('ALC'), ('AVB')))
        self.assertIn('ALC', section_range)
        self.assertIn('AVB', section_range)
        self.assertIn('AVA', section_range)
        self.assertNotIn('ALA', section_range)
        self.assertNotIn('AVC', section_range)

        section_range = list(ColumnHelper.get_range(('X'), ('AB')))
        self.assertIn('X', section_range)
        self.assertIn('Y', section_range)
        self.assertIn('AA', section_range)
        self.assertNotIn('Q', section_range)
        self.assertNotIn('AC', section_range)
        self.assertEqual(len(section_range), 5)

        section_range = list(ColumnHelper.get_range(('B'), ('CBD')))
        self.assertIn('B', section_range)
        self.assertIn('C', section_range)
        self.assertIn('AAA', section_range)
        self.assertIn('ZZ', section_range)
        self.assertIn('ABA', section_range)
        self.assertIn('CBD', section_range)
        self.assertIn('CAA', section_range)
        self.assertIn('BZZ', section_range)
        self.assertNotIn('CBE', section_range)

        section_range = list(ColumnHelper.get_range(('BCCC'), ('BCCD')))
        self.assertIn('BCCC', section_range)
        self.assertIn('BCCD', section_range)
        self.assertNotIn('A', section_range)
        self.assertNotIn('BCCE', section_range)
        self.assertEqual(len(section_range), 2)
Пример #2
0
    def set_columns_width(self, begin, end, start_cell):
        """
        Копирование ширины колонок
        :param begin: начало секции, пример ('A', 1)
        :type begin: 2-tuple
        :param end: конец секции, пример ('E', 6)
        :type end: 2-tuple
        :param start_cell: ячейка с которой выводилась секция
        :type start_cell: 2-tuple
        """
        # определим интервал столбцов из которых надо взять ширину
        end = self.get_cell_end(end)
        cols = list(ColumnHelper.get_range(begin[0], end[0]))

        # определим интервал столбцов, начинаемый со столбца начальной ячейки, куда надо прописать ширину
        end_col = ColumnHelper.add(start_cell[0],
                                   ColumnHelper.difference(end[0], begin[0]))
        new_cols = list(ColumnHelper.get_range(start_cell[0], end_col))

        # запишем ширину столбцов в интервал
        for index, src_col in enumerate(cols):
            dst_col = new_cols[index]
            src_col_el = self._create_or_get_output_col(src_col)
            # если нет исходной колонки, то не надо копировать
            if not src_col_el is None:
                # копируем данные
                attrib_col = dict(src_col_el.items())
                dst_col_el = self._create_or_get_output_col(
                    dst_col, attrib_col)
                # записываем в новую колонку
                self._set_new_column_width(dst_col, src_col_el, dst_col_el)
Пример #3
0
    def set_columns_width(self, begin, end, start_cell):
        """
        Копирование ширины колонок
        :param begin: начало секции, пример ('A', 1)
        :type begin: 2-tuple
        :param end: конец секции, пример ('E', 6)
        :type end: 2-tuple
        :param start_cell: ячейка с которой выводилась секция
        :type start_cell: 2-tuple
        """
        # определим интервал столбцов из которых надо взять ширину
        end = self.get_cell_end(end)
        cols = list(ColumnHelper.get_range(begin[0], end[0]))

        # определим интервал столбцов, начинаемый со столбца начальной ячейки, куда надо прописать ширину
        end_col = ColumnHelper.add(start_cell[0], ColumnHelper.difference(end[0], begin[0]))
        new_cols = list(ColumnHelper.get_range(start_cell[0], end_col))

        # запишем ширину столбцов в интервал
        for index, src_col in enumerate(cols):
            dst_col = new_cols[index]
            src_col_el = self._create_or_get_output_col(src_col)
            # если нет исходной колонки, то не надо копировать
            if not src_col_el is None:
                # копируем данные
                attrib_col = dict(src_col_el.items())
                dst_col_el = self._create_or_get_output_col(dst_col, attrib_col)
                # записываем в новую колонку
                self._set_new_column_width(dst_col, src_col_el, dst_col_el)
Пример #4
0
 def _addr_in_range(self, addr, begin, end):
     u"""
     Проверяет, попадает ли адрес в диапазон
     
     :param addr: адрес ячейки
     :type addr: 2-tuple
     :param begin: начальная ячейка диапазона
     :type begin: 2-tuple
     :param end: конечная ячейка диапазона
     :type end: 2-tuple
     """
     col, row = addr
     rows = xrange(begin[1], end[1] + 1)
     cols = list(ColumnHelper.get_range(begin[0], end[0]))
     return all([col in cols, row in rows])
Пример #5
0
 def _addr_in_range(self, addr, begin, end):
     u"""
     Проверяет, попадает ли адрес в диапазон
     
     :param addr: адрес ячейки
     :type addr: 2-tuple
     :param begin: начальная ячейка диапазона
     :type begin: 2-tuple
     :param end: конечная ячейка диапазона
     :type end: 2-tuple
     """
     col, row = addr
     rows = xrange(begin[1], end[1] + 1)
     cols = list(ColumnHelper.get_range(begin[0], end[0]))
     return all([col in cols, row in rows])
Пример #6
0
    def _range(self, begin, end):
        u"""
        Диапазон строк, колонок
        
        :param begin: начальная ячейка 
        :type begin: 2-tuple
        :param end: конечная ячейка
        :type end: 2-tuple
        """

        # Если есть объединенная ячейка, и она попадает на конец секции, то адресс конца секции записывается как конец
        # объединенной ячейки
        end = self.get_cell_end(end)

        rows = begin[1], end[1] + 1
        cols = begin[0], end[0]

        range_rows = xrange(*rows)
        range_cols = list(ColumnHelper.get_range(*cols))

        return range_rows, range_cols
Пример #7
0
    def _range(self, begin, end):
        u"""
        Диапазон строк, колонок
        
        :param begin: начальная ячейка 
        :type begin: 2-tuple
        :param end: конечная ячейка
        :type end: 2-tuple
        """

        # Если есть объединенная ячейка, и она попадает на конец секции, то адресс конца секции записывается как конец
        # объединенной ячейки
        end = self.get_cell_end(end)

        rows = begin[1], end[1] + 1
        cols = begin[0], end[0]

        range_rows = xrange(*rows)
        range_cols = list(ColumnHelper.get_range(*cols))

        return range_rows, range_cols