Coverage for /home/martinb/.local/share/virtualenvs/camcops/lib/python3.6/site-packages/openpyxl/pivot/table.py : 57%

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