A PyQT GUI application for converting InfoLease report outputs into Excel files. Handles parsing and summarizing. Learns where files are meant to be store and compiles monthly and yearly summaries.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
InfoLeaseExtract/venv/Lib/site-packages/openpyxl/worksheet/copier.py

70 lines
2.3 KiB

# Copyright (c) 2010-2022 openpyxl
#standard lib imports
from copy import copy
from .worksheet import Worksheet
class WorksheetCopy(object):
"""
Copy the values, styles, dimensions, merged cells, margins, and
print/page setup from one worksheet to another within the same
workbook.
"""
def __init__(self, source_worksheet, target_worksheet):
self.source = source_worksheet
self.target = target_worksheet
self._verify_resources()
def _verify_resources(self):
if (not isinstance(self.source, Worksheet)
and not isinstance(self.target, Worksheet)):
raise TypeError("Can only copy worksheets")
if self.source is self.target:
raise ValueError("Cannot copy a worksheet to itself")
if self.source.parent != self.target.parent:
raise ValueError('Cannot copy between worksheets from different workbooks')
def copy_worksheet(self):
self._copy_cells()
self._copy_dimensions()
self.target.sheet_format = copy(self.source.sheet_format)
self.target.sheet_properties = copy(self.source.sheet_properties)
self.target.merged_cells = copy(self.source.merged_cells)
self.target.page_margins = copy(self.source.page_margins)
self.target.page_setup = copy(self.source.page_setup)
self.target.print_options = copy(self.source.print_options)
def _copy_cells(self):
for (row, col), source_cell in self.source._cells.items():
target_cell = self.target.cell(column=col, row=row)
target_cell._value = source_cell._value
target_cell.data_type = source_cell.data_type
if source_cell.has_style:
target_cell._style = copy(source_cell._style)
if source_cell.hyperlink:
target_cell._hyperlink = copy(source_cell.hyperlink)
if source_cell.comment:
target_cell.comment = copy(source_cell.comment)
def _copy_dimensions(self):
for attr in ('row_dimensions', 'column_dimensions'):
src = getattr(self.source, attr)
target = getattr(self.target, attr)
for key, dim in src.items():
target[key] = copy(dim)
target[key].worksheet = self.target