Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/openpyxl/chartsheet/chartsheet.py: 99%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

67 statements  

1# Copyright (c) 2010-2024 openpyxl 

2 

3 

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 

19 

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 

26 

27 

28class Chartsheet(_WorkbookChild, Serialisable): 

29 

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" 

35 

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') 

50 

51 __elements__ = ( 

52 'sheetPr', 'sheetViews', 'sheetProtection', 'customSheetViews', 

53 'pageMargins', 'pageSetup', 'headerFooter', 'drawing', 'drawingHF', 

54 'picture', 'webPublishItems') 

55 

56 __attrs__ = () 

57 

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().__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 

92 

93 

94 def add_chart(self, chart): 

95 chart.anchor = AbsoluteAnchor() 

96 self._charts.append(chart) 

97 

98 

99 def to_tree(self): 

100 self._drawing = SpreadsheetDrawing() 

101 self._drawing.charts = self._charts 

102 tree = super().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