Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/openpyxl/chartsheet/chartsheet.py: 57%

69 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1# Copyright (c) 2010-2022 openpyxl 

2 

3from weakref import ref 

4 

5from openpyxl.descriptors import Typed, Set, Alias 

6from openpyxl.descriptors.excel import ExtensionList 

7from openpyxl.descriptors.serialisable import Serialisable 

8from openpyxl.drawing.spreadsheet_drawing import ( 

9 AbsoluteAnchor, 

10 SpreadsheetDrawing, 

11) 

12from openpyxl.worksheet.page import ( 

13 PageMargins, 

14 PrintPageSetup 

15) 

16from openpyxl.packaging.relationship import Relationship, RelationshipList 

17from openpyxl.worksheet.drawing import Drawing 

18from openpyxl.worksheet.header_footer import HeaderFooter 

19from openpyxl.workbook.child import _WorkbookChild 

20from openpyxl.xml.constants import SHEET_MAIN_NS, REL_NS 

21 

22from .relation import DrawingHF, SheetBackgroundPicture 

23from .properties import ChartsheetProperties 

24from .protection import ChartsheetProtection 

25from .views import ChartsheetViewList 

26from .custom import CustomChartsheetViews 

27from .publish import WebPublishItems 

28 

29 

30class Chartsheet(_WorkbookChild, Serialisable): 

31 

32 tagname = "chartsheet" 

33 _default_title = "Chart" 

34 _rel_type = "chartsheet" 

35 _path = "/xl/chartsheets/sheet{0}.xml" 

36 mime_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml" 

37 

38 sheetPr = Typed(expected_type=ChartsheetProperties, allow_none=True) 

39 sheetViews = Typed(expected_type=ChartsheetViewList) 

40 sheetProtection = Typed(expected_type=ChartsheetProtection, allow_none=True) 

41 customSheetViews = Typed(expected_type=CustomChartsheetViews, allow_none=True) 

42 pageMargins = Typed(expected_type=PageMargins, allow_none=True) 

43 pageSetup = Typed(expected_type=PrintPageSetup, allow_none=True) 

44 drawing = Typed(expected_type=Drawing, allow_none=True) 

45 drawingHF = Typed(expected_type=DrawingHF, allow_none=True) 

46 picture = Typed(expected_type=SheetBackgroundPicture, allow_none=True) 

47 webPublishItems = Typed(expected_type=WebPublishItems, allow_none=True) 

48 extLst = Typed(expected_type=ExtensionList, allow_none=True) 

49 sheet_state = Set(values=('visible', 'hidden', 'veryHidden')) 

50 headerFooter = Typed(expected_type=HeaderFooter) 

51 HeaderFooter = Alias('headerFooter') 

52 

53 __elements__ = ( 

54 'sheetPr', 'sheetViews', 'sheetProtection', 'customSheetViews', 

55 'pageMargins', 'pageSetup', 'headerFooter', 'drawing', 'drawingHF', 

56 'picture', 'webPublishItems') 

57 

58 __attrs__ = () 

59 

60 def __init__(self, 

61 sheetPr=None, 

62 sheetViews=None, 

63 sheetProtection=None, 

64 customSheetViews=None, 

65 pageMargins=None, 

66 pageSetup=None, 

67 headerFooter=None, 

68 drawing=None, 

69 drawingHF=None, 

70 picture=None, 

71 webPublishItems=None, 

72 extLst=None, 

73 parent=None, 

74 title="", 

75 sheet_state='visible', 

76 ): 

77 super(Chartsheet, self).__init__(parent, title) 

78 self._charts = [] 

79 self.sheetPr = sheetPr 

80 if sheetViews is None: 

81 sheetViews = ChartsheetViewList() 

82 self.sheetViews = sheetViews 

83 self.sheetProtection = sheetProtection 

84 self.customSheetViews = customSheetViews 

85 self.pageMargins = pageMargins 

86 self.pageSetup = pageSetup 

87 if headerFooter is not None: 

88 self.headerFooter = headerFooter 

89 self.drawing = Drawing("rId1") 

90 self.drawingHF = drawingHF 

91 self.picture = picture 

92 self.webPublishItems = webPublishItems 

93 self.sheet_state = sheet_state 

94 

95 

96 def add_chart(self, chart): 

97 chart.anchor = AbsoluteAnchor() 

98 self._charts.append(chart) 

99 

100 

101 def to_tree(self): 

102 self._drawing = SpreadsheetDrawing() 

103 self._drawing.charts = self._charts 

104 tree = super(Chartsheet, self).to_tree() 

105 if not self.headerFooter: 

106 el = tree.find('headerFooter') 

107 tree.remove(el) 

108 tree.set("xmlns", SHEET_MAIN_NS) 

109 return tree