Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/openpyxl/pivot/table.py: 60%
669 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
3from openpyxl.descriptors.serialisable import Serialisable
4from openpyxl.descriptors import (
5 Typed,
6 Integer,
7 NoneSet,
8 Set,
9 Float,
10 Bool,
11 DateTime,
12 String,
13 Alias,
14 Bool,
15 Sequence,
16)
18from openpyxl.descriptors.excel import ExtensionList, Relation
19from openpyxl.descriptors.nested import NestedInteger
20from openpyxl.descriptors.sequence import NestedSequence
21from openpyxl.xml.constants import SHEET_MAIN_NS
22from openpyxl.xml.functions import tostring
23from openpyxl.packaging.relationship import (
24 RelationshipList,
25 Relationship,
26 get_rels_path
27)
28from .fields import Index
30from openpyxl.worksheet.filters import (
31 AutoFilter,
32 CellRange,
33 ColorFilter,
34 CustomFilter,
35 CustomFilters,
36 DateGroupItem,
37 DynamicFilter,
38 FilterColumn,
39 Filters,
40 IconFilter,
41 SortCondition,
42 SortState,
43 Top10,
44)
47class HierarchyUsage(Serialisable):
49 tagname = "hierarchyUsage"
51 hierarchyUsage = Integer()
53 def __init__(self,
54 hierarchyUsage=None,
55 ):
56 self.hierarchyUsage = hierarchyUsage
59class ColHierarchiesUsage(Serialisable):
61 tagname = "colHierarchiesUsage"
63 colHierarchyUsage = Sequence(expected_type=HierarchyUsage, )
65 __elements__ = ('colHierarchyUsage',)
66 __attrs__ = ('count', )
68 def __init__(self,
69 count=None,
70 colHierarchyUsage=(),
71 ):
72 self.colHierarchyUsage = colHierarchyUsage
75 @property
76 def count(self):
77 return len(self.colHierarchyUsage)
80class RowHierarchiesUsage(Serialisable):
82 tagname = "rowHierarchiesUsage"
84 rowHierarchyUsage = Sequence(expected_type=HierarchyUsage, )
86 __elements__ = ('rowHierarchyUsage',)
87 __attrs__ = ('count', )
89 def __init__(self,
90 count=None,
91 rowHierarchyUsage=(),
92 ):
93 self.rowHierarchyUsage = rowHierarchyUsage
95 @property
96 def count(self):
97 return len(self.rowHierarchyUsage)
100class PivotFilter(Serialisable):
102 tagname = "filter"
104 fld = Integer()
105 mpFld = Integer(allow_none=True)
106 type = Set(values=(['unknown', 'count', 'percent', 'sum', 'captionEqual',
107 'captionNotEqual', 'captionBeginsWith', 'captionNotBeginsWith',
108 'captionEndsWith', 'captionNotEndsWith', 'captionContains',
109 'captionNotContains', 'captionGreaterThan', 'captionGreaterThanOrEqual',
110 'captionLessThan', 'captionLessThanOrEqual', 'captionBetween',
111 'captionNotBetween', 'valueEqual', 'valueNotEqual', 'valueGreaterThan',
112 'valueGreaterThanOrEqual', 'valueLessThan', 'valueLessThanOrEqual',
113 'valueBetween', 'valueNotBetween', 'dateEqual', 'dateNotEqual',
114 'dateOlderThan', 'dateOlderThanOrEqual', 'dateNewerThan',
115 'dateNewerThanOrEqual', 'dateBetween', 'dateNotBetween', 'tomorrow',
116 'today', 'yesterday', 'nextWeek', 'thisWeek', 'lastWeek', 'nextMonth',
117 'thisMonth', 'lastMonth', 'nextQuarter', 'thisQuarter', 'lastQuarter',
118 'nextYear', 'thisYear', 'lastYear', 'yearToDate', 'Q1', 'Q2', 'Q3', 'Q4',
119 'M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'M10', 'M11',
120 'M12']))
121 evalOrder = Integer(allow_none=True)
122 id = Integer()
123 iMeasureHier = Integer(allow_none=True)
124 iMeasureFld = Integer(allow_none=True)
125 name = String(allow_none=True)
126 description = String(allow_none=True)
127 stringValue1 = String(allow_none=True)
128 stringValue2 = String(allow_none=True)
129 autoFilter = Typed(expected_type=AutoFilter, )
130 extLst = Typed(expected_type=ExtensionList, allow_none=True)
132 __elements__ = ('autoFilter',)
134 def __init__(self,
135 fld=None,
136 mpFld=None,
137 type=None,
138 evalOrder=None,
139 id=None,
140 iMeasureHier=None,
141 iMeasureFld=None,
142 name=None,
143 description=None,
144 stringValue1=None,
145 stringValue2=None,
146 autoFilter=None,
147 extLst=None,
148 ):
149 self.fld = fld
150 self.mpFld = mpFld
151 self.type = type
152 self.evalOrder = evalOrder
153 self.id = id
154 self.iMeasureHier = iMeasureHier
155 self.iMeasureFld = iMeasureFld
156 self.name = name
157 self.description = description
158 self.stringValue1 = stringValue1
159 self.stringValue2 = stringValue2
160 self.autoFilter = autoFilter
163class PivotFilters(Serialisable):
165 count = Integer()
166 filter = Typed(expected_type=PivotFilter, allow_none=True)
168 __elements__ = ('filter',)
170 def __init__(self,
171 count=None,
172 filter=None,
173 ):
174 self.filter = filter
177class PivotTableStyle(Serialisable):
179 tagname = "pivotTableStyleInfo"
181 name = String(allow_none=True)
182 showRowHeaders = Bool()
183 showColHeaders = Bool()
184 showRowStripes = Bool()
185 showColStripes = Bool()
186 showLastColumn = Bool()
188 def __init__(self,
189 name=None,
190 showRowHeaders=None,
191 showColHeaders=None,
192 showRowStripes=None,
193 showColStripes=None,
194 showLastColumn=None,
195 ):
196 self.name = name
197 self.showRowHeaders = showRowHeaders
198 self.showColHeaders = showColHeaders
199 self.showRowStripes = showRowStripes
200 self.showColStripes = showColStripes
201 self.showLastColumn = showLastColumn
204class MemberList(Serialisable):
206 tagname = "members"
208 level = Integer(allow_none=True)
209 member = NestedSequence(expected_type=String, attribute="name")
211 __elements__ = ('member',)
213 def __init__(self,
214 count=None,
215 level=None,
216 member=(),
217 ):
218 self.level = level
219 self.member = member
221 @property
222 def count(self):
223 return len(self.member)
226class MemberProperty(Serialisable):
228 tagname = "mps"
230 name = String(allow_none=True)
231 showCell = Bool(allow_none=True)
232 showTip = Bool(allow_none=True)
233 showAsCaption = Bool(allow_none=True)
234 nameLen = Integer(allow_none=True)
235 pPos = Integer(allow_none=True)
236 pLen = Integer(allow_none=True)
237 level = Integer(allow_none=True)
238 field = Integer()
240 def __init__(self,
241 name=None,
242 showCell=None,
243 showTip=None,
244 showAsCaption=None,
245 nameLen=None,
246 pPos=None,
247 pLen=None,
248 level=None,
249 field=None,
250 ):
251 self.name = name
252 self.showCell = showCell
253 self.showTip = showTip
254 self.showAsCaption = showAsCaption
255 self.nameLen = nameLen
256 self.pPos = pPos
257 self.pLen = pLen
258 self.level = level
259 self.field = field
262class PivotHierarchy(Serialisable):
264 tagname = "pivotHierarchy"
266 outline = Bool()
267 multipleItemSelectionAllowed = Bool()
268 subtotalTop = Bool()
269 showInFieldList = Bool()
270 dragToRow = Bool()
271 dragToCol = Bool()
272 dragToPage = Bool()
273 dragToData = Bool()
274 dragOff = Bool()
275 includeNewItemsInFilter = Bool()
276 caption = String(allow_none=True)
277 mps = NestedSequence(expected_type=MemberProperty, count=True)
278 members = Typed(expected_type=MemberList, allow_none=True)
279 extLst = Typed(expected_type=ExtensionList, allow_none=True)
281 __elements__ = ('mps', 'members',)
283 def __init__(self,
284 outline=None,
285 multipleItemSelectionAllowed=None,
286 subtotalTop=None,
287 showInFieldList=None,
288 dragToRow=None,
289 dragToCol=None,
290 dragToPage=None,
291 dragToData=None,
292 dragOff=None,
293 includeNewItemsInFilter=None,
294 caption=None,
295 mps=(),
296 members=None,
297 extLst=None,
298 ):
299 self.outline = outline
300 self.multipleItemSelectionAllowed = multipleItemSelectionAllowed
301 self.subtotalTop = subtotalTop
302 self.showInFieldList = showInFieldList
303 self.dragToRow = dragToRow
304 self.dragToCol = dragToCol
305 self.dragToPage = dragToPage
306 self.dragToData = dragToData
307 self.dragOff = dragOff
308 self.includeNewItemsInFilter = includeNewItemsInFilter
309 self.caption = caption
310 self.mps = mps
311 self.members = members
312 self.extLst = extLst
315class Reference(Serialisable):
317 tagname = "reference"
319 field = Integer(allow_none=True)
320 selected = Bool(allow_none=True)
321 byPosition = Bool(allow_none=True)
322 relative = Bool(allow_none=True)
323 defaultSubtotal = Bool(allow_none=True)
324 sumSubtotal = Bool(allow_none=True)
325 countASubtotal = Bool(allow_none=True)
326 avgSubtotal = Bool(allow_none=True)
327 maxSubtotal = Bool(allow_none=True)
328 minSubtotal = Bool(allow_none=True)
329 productSubtotal = Bool(allow_none=True)
330 countSubtotal = Bool(allow_none=True)
331 stdDevSubtotal = Bool(allow_none=True)
332 stdDevPSubtotal = Bool(allow_none=True)
333 varSubtotal = Bool(allow_none=True)
334 varPSubtotal = Bool(allow_none=True)
335 x = NestedInteger(allow_none=True, attribute="v")
336 extLst = Typed(expected_type=ExtensionList, allow_none=True)
338 __elements__ = ('x',)
340 def __init__(self,
341 field=None,
342 count=None,
343 selected=None,
344 byPosition=None,
345 relative=None,
346 defaultSubtotal=None,
347 sumSubtotal=None,
348 countASubtotal=None,
349 avgSubtotal=None,
350 maxSubtotal=None,
351 minSubtotal=None,
352 productSubtotal=None,
353 countSubtotal=None,
354 stdDevSubtotal=None,
355 stdDevPSubtotal=None,
356 varSubtotal=None,
357 varPSubtotal=None,
358 x=None,
359 extLst=None,
360 ):
361 self.field = field
362 self.selected = selected
363 self.byPosition = byPosition
364 self.relative = relative
365 self.defaultSubtotal = defaultSubtotal
366 self.sumSubtotal = sumSubtotal
367 self.countASubtotal = countASubtotal
368 self.avgSubtotal = avgSubtotal
369 self.maxSubtotal = maxSubtotal
370 self.minSubtotal = minSubtotal
371 self.productSubtotal = productSubtotal
372 self.countSubtotal = countSubtotal
373 self.stdDevSubtotal = stdDevSubtotal
374 self.stdDevPSubtotal = stdDevPSubtotal
375 self.varSubtotal = varSubtotal
376 self.varPSubtotal = varPSubtotal
377 self.x = x
380 @property
381 def count(self):
382 return len(self.field)
385class PivotArea(Serialisable):
387 tagname = "pivotArea"
389 references = NestedSequence(expected_type=Reference, count=True)
390 extLst = Typed(expected_type=ExtensionList, allow_none=True)
391 field = Integer(allow_none=True)
392 type = NoneSet(values=(['normal', 'data', 'all', 'origin', 'button',
393 'topEnd', 'topRight']))
394 dataOnly = Bool(allow_none=True)
395 labelOnly = Bool(allow_none=True)
396 grandRow = Bool(allow_none=True)
397 grandCol = Bool(allow_none=True)
398 cacheIndex = Bool(allow_none=True)
399 outline = Bool(allow_none=True)
400 offset = String(allow_none=True)
401 collapsedLevelsAreSubtotals = Bool(allow_none=True)
402 axis = NoneSet(values=(['axisRow', 'axisCol', 'axisPage', 'axisValues']))
403 fieldPosition = Integer(allow_none=True)
405 __elements__ = ('references',)
407 def __init__(self,
408 references=(),
409 extLst=None,
410 field=None,
411 type="normal",
412 dataOnly=True,
413 labelOnly=None,
414 grandRow=None,
415 grandCol=None,
416 cacheIndex=None,
417 outline=True,
418 offset=None,
419 collapsedLevelsAreSubtotals=None,
420 axis=None,
421 fieldPosition=None,
422 ):
423 self.references = references
424 self.extLst = extLst
425 self.field = field
426 self.type = type
427 self.dataOnly = dataOnly
428 self.labelOnly = labelOnly
429 self.grandRow = grandRow
430 self.grandCol = grandCol
431 self.cacheIndex = cacheIndex
432 self.outline = outline
433 self.offset = offset
434 self.collapsedLevelsAreSubtotals = collapsedLevelsAreSubtotals
435 self.axis = axis
436 self.fieldPosition = fieldPosition
439class ChartFormat(Serialisable):
441 tagname = "chartFormat"
443 chart = Integer()
444 format = Integer()
445 series = Bool()
446 pivotArea = Typed(expected_type=PivotArea, )
448 __elements__ = ('pivotArea',)
450 def __init__(self,
451 chart=None,
452 format=None,
453 series=None,
454 pivotArea=None,
455 ):
456 self.chart = chart
457 self.format = format
458 self.series = series
459 self.pivotArea = pivotArea
462class ConditionalFormat(Serialisable):
464 tagname = "conditionalFormat"
466 scope = Set(values=(['selection', 'data', 'field']))
467 type = NoneSet(values=(['all', 'row', 'column']))
468 priority = Integer()
469 pivotAreas = NestedSequence(expected_type=PivotArea)
470 extLst = Typed(expected_type=ExtensionList, allow_none=True)
472 __elements__ = ('pivotAreas',)
474 def __init__(self,
475 scope="selection",
476 type=None,
477 priority=None,
478 pivotAreas=(),
479 extLst=None,
480 ):
481 self.scope = scope
482 self.type = type
483 self.priority = priority
484 self.pivotAreas = pivotAreas
485 self.extLst = extLst
488class Format(Serialisable):
490 tagname = "format"
492 action = NoneSet(values=(['blank', 'formatting', 'drill', 'formula']))
493 dxfId = Integer(allow_none=True)
494 pivotArea = Typed(expected_type=PivotArea, )
495 extLst = Typed(expected_type=ExtensionList, allow_none=True)
497 __elements__ = ('pivotArea',)
499 def __init__(self,
500 action="formatting",
501 dxfId=None,
502 pivotArea=None,
503 extLst=None,
504 ):
505 self.action = action
506 self.dxfId = dxfId
507 self.pivotArea = pivotArea
508 self.extLst = extLst
511class DataField(Serialisable):
513 tagname = "dataField"
515 name = String(allow_none=True)
516 fld = Integer()
517 subtotal = Set(values=(['average', 'count', 'countNums', 'max', 'min',
518 'product', 'stdDev', 'stdDevp', 'sum', 'var', 'varp']))
519 showDataAs = Set(values=(['normal', 'difference', 'percent',
520 'percentDiff', 'runTotal', 'percentOfRow', 'percentOfCol',
521 'percentOfTotal', 'index']))
522 baseField = Integer()
523 baseItem = Integer()
524 numFmtId = Integer(allow_none=True)
525 extLst = Typed(expected_type=ExtensionList, allow_none=True)
527 __elements__ = ()
530 def __init__(self,
531 name=None,
532 fld=None,
533 subtotal="sum",
534 showDataAs="normal",
535 baseField=-1,
536 baseItem=1048832,
537 numFmtId=None,
538 extLst=None,
539 ):
540 self.name = name
541 self.fld = fld
542 self.subtotal = subtotal
543 self.showDataAs = showDataAs
544 self.baseField = baseField
545 self.baseItem = baseItem
546 self.numFmtId = numFmtId
547 self.extLst = extLst
550class PageField(Serialisable):
552 tagname = "pageField"
554 fld = Integer()
555 item = Integer(allow_none=True)
556 hier = Integer(allow_none=True)
557 name = String(allow_none=True)
558 cap = String(allow_none=True)
559 extLst = Typed(expected_type=ExtensionList, allow_none=True)
561 __elements__ = ()
563 def __init__(self,
564 fld=None,
565 item=None,
566 hier=None,
567 name=None,
568 cap=None,
569 extLst=None,
570 ):
571 self.fld = fld
572 self.item = item
573 self.hier = hier
574 self.name = name
575 self.cap = cap
576 self.extLst = extLst
579class RowColItem(Serialisable):
581 tagname = "i"
583 t = Set(values=(['data', 'default', 'sum', 'countA', 'avg', 'max', 'min',
584 'product', 'count', 'stdDev', 'stdDevP', 'var', 'varP', 'grand',
585 'blank']))
586 r = Integer()
587 i = Integer()
588 x = Sequence(expected_type=Index, attribute="v")
590 __elements__ = ('x',)
592 def __init__(self,
593 t="data",
594 r=0,
595 i=0,
596 x=(),
597 ):
598 self.t = t
599 self.r = r
600 self.i = i
601 self.x = x
604class RowColField(Serialisable):
606 tagname = "field"
608 x = Integer()
610 def __init__(self,
611 x=None,
612 ):
613 self.x = x
616class AutoSortScope(Serialisable):
618 pivotArea = Typed(expected_type=PivotArea, )
620 __elements__ = ('pivotArea',)
622 def __init__(self,
623 pivotArea=None,
624 ):
625 self.pivotArea = pivotArea
628class FieldItem(Serialisable):
630 tagname = "item"
632 n = String(allow_none=True)
633 t = Set(values=(['data', 'default', 'sum', 'countA', 'avg', 'max', 'min',
634 'product', 'count', 'stdDev', 'stdDevP', 'var', 'varP', 'grand',
635 'blank']))
636 h = Bool(allow_none=True)
637 s = Bool(allow_none=True)
638 sd = Bool(allow_none=True)
639 f = Bool(allow_none=True)
640 m = Bool(allow_none=True)
641 c = Bool(allow_none=True)
642 x = Integer(allow_none=True)
643 d = Bool(allow_none=True)
644 e = Bool(allow_none=True)
646 def __init__(self,
647 n=None,
648 t="data",
649 h=None,
650 s=None,
651 sd=True,
652 f=None,
653 m=None,
654 c=None,
655 x=None,
656 d=None,
657 e=None,
658 ):
659 self.n = n
660 self.t = t
661 self.h = h
662 self.s = s
663 self.sd = sd
664 self.f = f
665 self.m = m
666 self.c = c
667 self.x = x
668 self.d = d
669 self.e = e
672class PivotField(Serialisable):
674 tagname = "pivotField"
676 items = NestedSequence(expected_type=FieldItem, count=True)
677 autoSortScope = Typed(expected_type=AutoSortScope, allow_none=True)
678 extLst = Typed(expected_type=ExtensionList, allow_none=True)
679 name = String(allow_none=True)
680 axis = NoneSet(values=(['axisRow', 'axisCol', 'axisPage', 'axisValues']))
681 dataField = Bool(allow_none=True)
682 subtotalCaption = String(allow_none=True)
683 showDropDowns = Bool(allow_none=True)
684 hiddenLevel = Bool(allow_none=True)
685 uniqueMemberProperty = String(allow_none=True)
686 compact = Bool(allow_none=True)
687 allDrilled = Bool(allow_none=True)
688 numFmtId = Integer(allow_none=True)
689 outline = Bool(allow_none=True)
690 subtotalTop = Bool(allow_none=True)
691 dragToRow = Bool(allow_none=True)
692 dragToCol = Bool(allow_none=True)
693 multipleItemSelectionAllowed = Bool(allow_none=True)
694 dragToPage = Bool(allow_none=True)
695 dragToData = Bool(allow_none=True)
696 dragOff = Bool(allow_none=True)
697 showAll = Bool(allow_none=True)
698 insertBlankRow = Bool(allow_none=True)
699 serverField = Bool(allow_none=True)
700 insertPageBreak = Bool(allow_none=True)
701 autoShow = Bool(allow_none=True)
702 topAutoShow = Bool(allow_none=True)
703 hideNewItems = Bool(allow_none=True)
704 measureFilter = Bool(allow_none=True)
705 includeNewItemsInFilter = Bool(allow_none=True)
706 itemPageCount = Integer(allow_none=True)
707 sortType = Set(values=(['manual', 'ascending', 'descending']))
708 dataSourceSort = Bool(allow_none=True)
709 nonAutoSortDefault = Bool(allow_none=True)
710 rankBy = Integer(allow_none=True)
711 defaultSubtotal = Bool(allow_none=True)
712 sumSubtotal = Bool(allow_none=True)
713 countASubtotal = Bool(allow_none=True)
714 avgSubtotal = Bool(allow_none=True)
715 maxSubtotal = Bool(allow_none=True)
716 minSubtotal = Bool(allow_none=True)
717 productSubtotal = Bool(allow_none=True)
718 countSubtotal = Bool(allow_none=True)
719 stdDevSubtotal = Bool(allow_none=True)
720 stdDevPSubtotal = Bool(allow_none=True)
721 varSubtotal = Bool(allow_none=True)
722 varPSubtotal = Bool(allow_none=True)
723 showPropCell = Bool(allow_none=True)
724 showPropTip = Bool(allow_none=True)
725 showPropAsCaption = Bool(allow_none=True)
726 defaultAttributeDrillState = Bool(allow_none=True)
728 __elements__ = ('items', 'autoSortScope',)
730 def __init__(self,
731 items=(),
732 autoSortScope=None,
733 name=None,
734 axis=None,
735 dataField=None,
736 subtotalCaption=None,
737 showDropDowns=True,
738 hiddenLevel=None,
739 uniqueMemberProperty=None,
740 compact=True,
741 allDrilled=None,
742 numFmtId=None,
743 outline=True,
744 subtotalTop=True,
745 dragToRow=True,
746 dragToCol=True,
747 multipleItemSelectionAllowed=None,
748 dragToPage=True,
749 dragToData=True,
750 dragOff=True,
751 showAll=True,
752 insertBlankRow=None,
753 serverField=None,
754 insertPageBreak=None,
755 autoShow=None,
756 topAutoShow=True,
757 hideNewItems=None,
758 measureFilter=None,
759 includeNewItemsInFilter=None,
760 itemPageCount=10,
761 sortType="manual",
762 dataSourceSort=None,
763 nonAutoSortDefault=None,
764 rankBy=None,
765 defaultSubtotal=True,
766 sumSubtotal=None,
767 countASubtotal=None,
768 avgSubtotal=None,
769 maxSubtotal=None,
770 minSubtotal=None,
771 productSubtotal=None,
772 countSubtotal=None,
773 stdDevSubtotal=None,
774 stdDevPSubtotal=None,
775 varSubtotal=None,
776 varPSubtotal=None,
777 showPropCell=None,
778 showPropTip=None,
779 showPropAsCaption=None,
780 defaultAttributeDrillState=None,
781 extLst=None,
782 ):
783 self.items = items
784 self.autoSortScope = autoSortScope
785 self.name = name
786 self.axis = axis
787 self.dataField = dataField
788 self.subtotalCaption = subtotalCaption
789 self.showDropDowns = showDropDowns
790 self.hiddenLevel = hiddenLevel
791 self.uniqueMemberProperty = uniqueMemberProperty
792 self.compact = compact
793 self.allDrilled = allDrilled
794 self.numFmtId = numFmtId
795 self.outline = outline
796 self.subtotalTop = subtotalTop
797 self.dragToRow = dragToRow
798 self.dragToCol = dragToCol
799 self.multipleItemSelectionAllowed = multipleItemSelectionAllowed
800 self.dragToPage = dragToPage
801 self.dragToData = dragToData
802 self.dragOff = dragOff
803 self.showAll = showAll
804 self.insertBlankRow = insertBlankRow
805 self.serverField = serverField
806 self.insertPageBreak = insertPageBreak
807 self.autoShow = autoShow
808 self.topAutoShow = topAutoShow
809 self.hideNewItems = hideNewItems
810 self.measureFilter = measureFilter
811 self.includeNewItemsInFilter = includeNewItemsInFilter
812 self.itemPageCount = itemPageCount
813 self.sortType = sortType
814 self.dataSourceSort = dataSourceSort
815 self.nonAutoSortDefault = nonAutoSortDefault
816 self.rankBy = rankBy
817 self.defaultSubtotal = defaultSubtotal
818 self.sumSubtotal = sumSubtotal
819 self.countASubtotal = countASubtotal
820 self.avgSubtotal = avgSubtotal
821 self.maxSubtotal = maxSubtotal
822 self.minSubtotal = minSubtotal
823 self.productSubtotal = productSubtotal
824 self.countSubtotal = countSubtotal
825 self.stdDevSubtotal = stdDevSubtotal
826 self.stdDevPSubtotal = stdDevPSubtotal
827 self.varSubtotal = varSubtotal
828 self.varPSubtotal = varPSubtotal
829 self.showPropCell = showPropCell
830 self.showPropTip = showPropTip
831 self.showPropAsCaption = showPropAsCaption
832 self.defaultAttributeDrillState = defaultAttributeDrillState
835class Location(Serialisable):
837 tagname = "location"
839 ref = String()
840 firstHeaderRow = Integer()
841 firstDataRow = Integer()
842 firstDataCol = Integer()
843 rowPageCount = Integer(allow_none=True)
844 colPageCount = Integer(allow_none=True)
846 def __init__(self,
847 ref=None,
848 firstHeaderRow=None,
849 firstDataRow=None,
850 firstDataCol=None,
851 rowPageCount=None,
852 colPageCount=None,
853 ):
854 self.ref = ref
855 self.firstHeaderRow = firstHeaderRow
856 self.firstDataRow = firstDataRow
857 self.firstDataCol = firstDataCol
858 self.rowPageCount = rowPageCount
859 self.colPageCount = colPageCount
862class TableDefinition(Serialisable):
864 mime_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml"
865 rel_type = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable"
866 _id = 1
867 _path = "/xl/pivotTables/pivotTable{0}.xml"
869 tagname = "pivotTableDefinition"
870 cache = None
872 name = String()
873 cacheId = Integer()
874 dataOnRows = Bool()
875 dataPosition = Integer(allow_none=True)
876 dataCaption = String()
877 grandTotalCaption = String(allow_none=True)
878 errorCaption = String(allow_none=True)
879 showError = Bool()
880 missingCaption = String(allow_none=True)
881 showMissing = Bool()
882 pageStyle = String(allow_none=True)
883 pivotTableStyle = String(allow_none=True)
884 vacatedStyle = String(allow_none=True)
885 tag = String(allow_none=True)
886 updatedVersion = Integer()
887 minRefreshableVersion = Integer()
888 asteriskTotals = Bool()
889 showItems = Bool()
890 editData = Bool()
891 disableFieldList = Bool()
892 showCalcMbrs = Bool()
893 visualTotals = Bool()
894 showMultipleLabel = Bool()
895 showDataDropDown = Bool()
896 showDrill = Bool()
897 printDrill = Bool()
898 showMemberPropertyTips = Bool()
899 showDataTips = Bool()
900 enableWizard = Bool()
901 enableDrill = Bool()
902 enableFieldProperties = Bool()
903 preserveFormatting = Bool()
904 useAutoFormatting = Bool()
905 pageWrap = Integer()
906 pageOverThenDown = Bool()
907 subtotalHiddenItems = Bool()
908 rowGrandTotals = Bool()
909 colGrandTotals = Bool()
910 fieldPrintTitles = Bool()
911 itemPrintTitles = Bool()
912 mergeItem = Bool()
913 showDropZones = Bool()
914 createdVersion = Integer()
915 indent = Integer()
916 showEmptyRow = Bool()
917 showEmptyCol = Bool()
918 showHeaders = Bool()
919 compact = Bool()
920 outline = Bool()
921 outlineData = Bool()
922 compactData = Bool()
923 published = Bool()
924 gridDropZones = Bool()
925 immersive = Bool()
926 multipleFieldFilters = Bool()
927 chartFormat = Integer()
928 rowHeaderCaption = String(allow_none=True)
929 colHeaderCaption = String(allow_none=True)
930 fieldListSortAscending = Bool()
931 mdxSubqueries = Bool()
932 customListSort = Bool(allow_none=True)
933 autoFormatId = Integer(allow_none=True)
934 applyNumberFormats = Bool()
935 applyBorderFormats = Bool()
936 applyFontFormats = Bool()
937 applyPatternFormats = Bool()
938 applyAlignmentFormats = Bool()
939 applyWidthHeightFormats = Bool()
940 location = Typed(expected_type=Location, )
941 pivotFields = NestedSequence(expected_type=PivotField, count=True)
942 rowFields = NestedSequence(expected_type=RowColField, count=True)
943 rowItems = NestedSequence(expected_type=RowColItem, count=True)
944 colFields = NestedSequence(expected_type=RowColField, count=True)
945 colItems = NestedSequence(expected_type=RowColItem, count=True)
946 pageFields = NestedSequence(expected_type=PageField, count=True)
947 dataFields = NestedSequence(expected_type=DataField, count=True)
948 formats = NestedSequence(expected_type=Format, count=True)
949 conditionalFormats = NestedSequence(expected_type=ConditionalFormat, count=True)
950 chartFormats = NestedSequence(expected_type=ChartFormat, count=True)
951 pivotHierarchies = NestedSequence(expected_type=PivotHierarchy, count=True)
952 pivotTableStyleInfo = Typed(expected_type=PivotTableStyle, allow_none=True)
953 filters = NestedSequence(expected_type=PivotFilter, count=True)
954 rowHierarchiesUsage = Typed(expected_type=RowHierarchiesUsage, allow_none=True)
955 colHierarchiesUsage = Typed(expected_type=ColHierarchiesUsage, allow_none=True)
956 extLst = Typed(expected_type=ExtensionList, allow_none=True)
957 id = Relation()
959 __elements__ = ('location', 'pivotFields', 'rowFields', 'rowItems',
960 'colFields', 'colItems', 'pageFields', 'dataFields', 'formats',
961 'conditionalFormats', 'chartFormats', 'pivotHierarchies',
962 'pivotTableStyleInfo', 'filters', 'rowHierarchiesUsage',
963 'colHierarchiesUsage',)
965 def __init__(self,
966 name=None,
967 cacheId=None,
968 dataOnRows=False,
969 dataPosition=None,
970 dataCaption=None,
971 grandTotalCaption=None,
972 errorCaption=None,
973 showError=False,
974 missingCaption=None,
975 showMissing=True,
976 pageStyle=None,
977 pivotTableStyle=None,
978 vacatedStyle=None,
979 tag=None,
980 updatedVersion=0,
981 minRefreshableVersion=0,
982 asteriskTotals=False,
983 showItems=True,
984 editData=False,
985 disableFieldList=False,
986 showCalcMbrs=True,
987 visualTotals=True,
988 showMultipleLabel=True,
989 showDataDropDown=True,
990 showDrill=True,
991 printDrill=False,
992 showMemberPropertyTips=True,
993 showDataTips=True,
994 enableWizard=True,
995 enableDrill=True,
996 enableFieldProperties=True,
997 preserveFormatting=True,
998 useAutoFormatting=False,
999 pageWrap=0,
1000 pageOverThenDown=False,
1001 subtotalHiddenItems=False,
1002 rowGrandTotals=True,
1003 colGrandTotals=True,
1004 fieldPrintTitles=False,
1005 itemPrintTitles=False,
1006 mergeItem=False,
1007 showDropZones=True,
1008 createdVersion=0,
1009 indent=1,
1010 showEmptyRow=False,
1011 showEmptyCol=False,
1012 showHeaders=True,
1013 compact=True,
1014 outline=False,
1015 outlineData=False,
1016 compactData=True,
1017 published=False,
1018 gridDropZones=False,
1019 immersive=True,
1020 multipleFieldFilters=None,
1021 chartFormat=0,
1022 rowHeaderCaption=None,
1023 colHeaderCaption=None,
1024 fieldListSortAscending=None,
1025 mdxSubqueries=None,
1026 customListSort=None,
1027 autoFormatId=None,
1028 applyNumberFormats=False,
1029 applyBorderFormats=False,
1030 applyFontFormats=False,
1031 applyPatternFormats=False,
1032 applyAlignmentFormats=False,
1033 applyWidthHeightFormats=False,
1034 location=None,
1035 pivotFields=(),
1036 rowFields=(),
1037 rowItems=(),
1038 colFields=(),
1039 colItems=(),
1040 pageFields=(),
1041 dataFields=(),
1042 formats=(),
1043 conditionalFormats=(),
1044 chartFormats=(),
1045 pivotHierarchies=(),
1046 pivotTableStyleInfo=None,
1047 filters=(),
1048 rowHierarchiesUsage=None,
1049 colHierarchiesUsage=None,
1050 extLst=None,
1051 id=None,
1052 ):
1053 self.name = name
1054 self.cacheId = cacheId
1055 self.dataOnRows = dataOnRows
1056 self.dataPosition = dataPosition
1057 self.dataCaption = dataCaption
1058 self.grandTotalCaption = grandTotalCaption
1059 self.errorCaption = errorCaption
1060 self.showError = showError
1061 self.missingCaption = missingCaption
1062 self.showMissing = showMissing
1063 self.pageStyle = pageStyle
1064 self.pivotTableStyle = pivotTableStyle
1065 self.vacatedStyle = vacatedStyle
1066 self.tag = tag
1067 self.updatedVersion = updatedVersion
1068 self.minRefreshableVersion = minRefreshableVersion
1069 self.asteriskTotals = asteriskTotals
1070 self.showItems = showItems
1071 self.editData = editData
1072 self.disableFieldList = disableFieldList
1073 self.showCalcMbrs = showCalcMbrs
1074 self.visualTotals = visualTotals
1075 self.showMultipleLabel = showMultipleLabel
1076 self.showDataDropDown = showDataDropDown
1077 self.showDrill = showDrill
1078 self.printDrill = printDrill
1079 self.showMemberPropertyTips = showMemberPropertyTips
1080 self.showDataTips = showDataTips
1081 self.enableWizard = enableWizard
1082 self.enableDrill = enableDrill
1083 self.enableFieldProperties = enableFieldProperties
1084 self.preserveFormatting = preserveFormatting
1085 self.useAutoFormatting = useAutoFormatting
1086 self.pageWrap = pageWrap
1087 self.pageOverThenDown = pageOverThenDown
1088 self.subtotalHiddenItems = subtotalHiddenItems
1089 self.rowGrandTotals = rowGrandTotals
1090 self.colGrandTotals = colGrandTotals
1091 self.fieldPrintTitles = fieldPrintTitles
1092 self.itemPrintTitles = itemPrintTitles
1093 self.mergeItem = mergeItem
1094 self.showDropZones = showDropZones
1095 self.createdVersion = createdVersion
1096 self.indent = indent
1097 self.showEmptyRow = showEmptyRow
1098 self.showEmptyCol = showEmptyCol
1099 self.showHeaders = showHeaders
1100 self.compact = compact
1101 self.outline = outline
1102 self.outlineData = outlineData
1103 self.compactData = compactData
1104 self.published = published
1105 self.gridDropZones = gridDropZones
1106 self.immersive = immersive
1107 self.multipleFieldFilters = multipleFieldFilters
1108 self.chartFormat = chartFormat
1109 self.rowHeaderCaption = rowHeaderCaption
1110 self.colHeaderCaption = colHeaderCaption
1111 self.fieldListSortAscending = fieldListSortAscending
1112 self.mdxSubqueries = mdxSubqueries
1113 self.customListSort = customListSort
1114 self.autoFormatId = autoFormatId
1115 self.applyNumberFormats = applyNumberFormats
1116 self.applyBorderFormats = applyBorderFormats
1117 self.applyFontFormats = applyFontFormats
1118 self.applyPatternFormats = applyPatternFormats
1119 self.applyAlignmentFormats = applyAlignmentFormats
1120 self.applyWidthHeightFormats = applyWidthHeightFormats
1121 self.location = location
1122 self.pivotFields = pivotFields
1123 self.rowFields = rowFields
1124 self.rowItems = rowItems
1125 self.colFields = colFields
1126 self.colItems = colItems
1127 self.pageFields = pageFields
1128 self.dataFields = dataFields
1129 self.formats = formats
1130 self.conditionalFormats = conditionalFormats
1131 self.chartFormats = chartFormats
1132 self.pivotHierarchies = pivotHierarchies
1133 self.pivotTableStyleInfo = pivotTableStyleInfo
1134 self.filters = filters
1135 self.rowHierarchiesUsage = rowHierarchiesUsage
1136 self.colHierarchiesUsage = colHierarchiesUsage
1137 self.extLst = extLst
1138 self.id = id
1141 def to_tree(self):
1142 tree = super(TableDefinition, self).to_tree()
1143 tree.set("xmlns", SHEET_MAIN_NS)
1144 return tree
1147 @property
1148 def path(self):
1149 return self._path.format(self._id)
1152 def _write(self, archive, manifest):
1153 """
1154 Add to zipfile and update manifest
1155 """
1156 self._write_rels(archive, manifest)
1157 xml = tostring(self.to_tree())
1158 archive.writestr(self.path[1:], xml)
1159 manifest.append(self)
1162 def _write_rels(self, archive, manifest):
1163 """
1164 Write the relevant child objects and add links
1165 """
1166 if self.cache is None:
1167 return
1169 rels = RelationshipList()
1170 r = Relationship(Type=self.cache.rel_type, Target=self.cache.path)
1171 rels.append(r)
1172 self.id = r.id
1173 if self.cache.path[1:] not in archive.namelist():
1174 self.cache._write(archive, manifest)
1176 path = get_rels_path(self.path)
1177 xml = tostring(rels.to_tree())
1178 archive.writestr(path[1:], xml)