Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/openpyxl/chartsheet/chartsheet.py: 99%
67 statements
« prev ^ index » next coverage.py v7.3.3, created at 2023-12-20 06:34 +0000
« prev ^ index » next coverage.py v7.3.3, created at 2023-12-20 06:34 +0000
1# Copyright (c) 2010-2023 openpyxl
4from openpyxl.descriptors import Typed, Set, Alias
5from openpyxl.descriptors.excel import ExtensionList
6from openpyxl.descriptors.serialisable import Serialisable
7from openpyxl.drawing.spreadsheet_drawing import (
8 AbsoluteAnchor,
9 SpreadsheetDrawing,
10)
11from openpyxl.worksheet.page import (
12 PageMargins,
13 PrintPageSetup
14)
15from openpyxl.worksheet.drawing import Drawing
16from openpyxl.worksheet.header_footer import HeaderFooter
17from openpyxl.workbook.child import _WorkbookChild
18from openpyxl.xml.constants import SHEET_MAIN_NS, REL_NS
20from .relation import DrawingHF, SheetBackgroundPicture
21from .properties import ChartsheetProperties
22from .protection import ChartsheetProtection
23from .views import ChartsheetViewList
24from .custom import CustomChartsheetViews
25from .publish import WebPublishItems
28class Chartsheet(_WorkbookChild, Serialisable):
30 tagname = "chartsheet"
31 _default_title = "Chart"
32 _rel_type = "chartsheet"
33 _path = "/xl/chartsheets/sheet{0}.xml"
34 mime_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml"
36 sheetPr = Typed(expected_type=ChartsheetProperties, allow_none=True)
37 sheetViews = Typed(expected_type=ChartsheetViewList)
38 sheetProtection = Typed(expected_type=ChartsheetProtection, allow_none=True)
39 customSheetViews = Typed(expected_type=CustomChartsheetViews, allow_none=True)
40 pageMargins = Typed(expected_type=PageMargins, allow_none=True)
41 pageSetup = Typed(expected_type=PrintPageSetup, allow_none=True)
42 drawing = Typed(expected_type=Drawing, allow_none=True)
43 drawingHF = Typed(expected_type=DrawingHF, allow_none=True)
44 picture = Typed(expected_type=SheetBackgroundPicture, allow_none=True)
45 webPublishItems = Typed(expected_type=WebPublishItems, allow_none=True)
46 extLst = Typed(expected_type=ExtensionList, allow_none=True)
47 sheet_state = Set(values=('visible', 'hidden', 'veryHidden'))
48 headerFooter = Typed(expected_type=HeaderFooter)
49 HeaderFooter = Alias('headerFooter')
51 __elements__ = (
52 'sheetPr', 'sheetViews', 'sheetProtection', 'customSheetViews',
53 'pageMargins', 'pageSetup', 'headerFooter', 'drawing', 'drawingHF',
54 'picture', 'webPublishItems')
56 __attrs__ = ()
58 def __init__(self,
59 sheetPr=None,
60 sheetViews=None,
61 sheetProtection=None,
62 customSheetViews=None,
63 pageMargins=None,
64 pageSetup=None,
65 headerFooter=None,
66 drawing=None,
67 drawingHF=None,
68 picture=None,
69 webPublishItems=None,
70 extLst=None,
71 parent=None,
72 title="",
73 sheet_state='visible',
74 ):
75 super(Chartsheet, self).__init__(parent, title)
76 self._charts = []
77 self.sheetPr = sheetPr
78 if sheetViews is None:
79 sheetViews = ChartsheetViewList()
80 self.sheetViews = sheetViews
81 self.sheetProtection = sheetProtection
82 self.customSheetViews = customSheetViews
83 self.pageMargins = pageMargins
84 self.pageSetup = pageSetup
85 if headerFooter is not None:
86 self.headerFooter = headerFooter
87 self.drawing = Drawing("rId1")
88 self.drawingHF = drawingHF
89 self.picture = picture
90 self.webPublishItems = webPublishItems
91 self.sheet_state = sheet_state
94 def add_chart(self, chart):
95 chart.anchor = AbsoluteAnchor()
96 self._charts.append(chart)
99 def to_tree(self):
100 self._drawing = SpreadsheetDrawing()
101 self._drawing.charts = self._charts
102 tree = super(Chartsheet, self).to_tree()
103 if not self.headerFooter:
104 el = tree.find('headerFooter')
105 tree.remove(el)
106 tree.set("xmlns", SHEET_MAIN_NS)
107 return tree