Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/openpyxl/worksheet/copier.py: 16%
41 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1# Copyright (c) 2010-2022 openpyxl
3#standard lib imports
4from copy import copy
6from .worksheet import Worksheet
9class WorksheetCopy(object):
10 """
11 Copy the values, styles, dimensions, merged cells, margins, and
12 print/page setup from one worksheet to another within the same
13 workbook.
14 """
16 def __init__(self, source_worksheet, target_worksheet):
17 self.source = source_worksheet
18 self.target = target_worksheet
19 self._verify_resources()
22 def _verify_resources(self):
24 if (not isinstance(self.source, Worksheet)
25 and not isinstance(self.target, Worksheet)):
26 raise TypeError("Can only copy worksheets")
28 if self.source is self.target:
29 raise ValueError("Cannot copy a worksheet to itself")
31 if self.source.parent != self.target.parent:
32 raise ValueError('Cannot copy between worksheets from different workbooks')
35 def copy_worksheet(self):
36 self._copy_cells()
37 self._copy_dimensions()
39 self.target.sheet_format = copy(self.source.sheet_format)
40 self.target.sheet_properties = copy(self.source.sheet_properties)
41 self.target.merged_cells = copy(self.source.merged_cells)
42 self.target.page_margins = copy(self.source.page_margins)
43 self.target.page_setup = copy(self.source.page_setup)
44 self.target.print_options = copy(self.source.print_options)
47 def _copy_cells(self):
48 for (row, col), source_cell in self.source._cells.items():
49 target_cell = self.target.cell(column=col, row=row)
51 target_cell._value = source_cell._value
52 target_cell.data_type = source_cell.data_type
54 if source_cell.has_style:
55 target_cell._style = copy(source_cell._style)
57 if source_cell.hyperlink:
58 target_cell._hyperlink = copy(source_cell.hyperlink)
60 if source_cell.comment:
61 target_cell.comment = copy(source_cell.comment)
64 def _copy_dimensions(self):
65 for attr in ('row_dimensions', 'column_dimensions'):
66 src = getattr(self.source, attr)
67 target = getattr(self.target, attr)
68 for key, dim in src.items():
69 target[key] = copy(dim)
70 target[key].worksheet = self.target