"Vfi4FddlmZddlmZddlmZmZmZmZm Z m Z m Z m Z ddl m Z mZddlmZddlmZddlmZddlmZmZmZd d lmZdd lmZGd d eZGddeZGddeZGddeZ GddeZ!GddeZ"GddeZ#GddeZ$GddeZ%GddeZ&Gd d!eZ'Gd"d#eZ(Gd$d%eZ)Gd&d'eZ*Gd(d)eZ+Gd*d+eZ,Gd,d-eZ-Gd.d/eZ.Gd0d1eZ/Gd2d3eZ0Gd4d5eZ1Gd6d7eZ2Gd8d9eZ3Gd:d;eZ4d > >FLrrceZdZdZedZeZeZeZ eZ eZ ddZ dS)PivotTableStylepivotTableStyleInfoTrBNcZ||_||_||_||_||_||_dSr)rshowRowHeadersshowColHeadersshowRowStripesshowColStripesshowLastColumn)rrrrrrrs rrzPivotTableStyle.__init__s9 ,,,,,rNNNNNN) r r!r"r#r rr rrrrrrr$rrrrs#G 6T " " "DTVVNTVVNTVVNTVVNTVVN $ $ $ $ $ - - - - - -rrcleZdZdZedZeedZdZ d d Z e d Z dS) MemberListmembersTrBrr) attribute)memberNr$c"||_||_dSr)levelr)rr-rrs rrzMemberList.__init__s   rc*t|jSr)r1rr2s rr-zMemberList.counts4;r)NNr$) r r!r"r#rrrr rr5rr7r-r$rrrrs~G Gt $ $ $E ^&F C C CFL  X   rrceZdZdZedZedZedZedZ e dZ e dZ e dZ e dZe Z ddZdS)MemberPropertympsTrBNc ||_||_||_||_||_||_||_||_| |_dSr) rshowCellshowTip showAsCaptionnameLenpPospLenrfield) rrrrrrrrrrs rrzMemberProperty.__init__sH    *     r) NNNNNNNNN)r r!r"r#r rr rrrrrrrrrrr$rrrrsG 6T " " "Dtt$$$Hdd###GDD)))Mg&&&G 7d # # #D 7d # # #D Gt $ $ $E GIIE#rrcheZdZdZeZeZeZeZeZ eZ eZ eZ eZ eZedZeedZeedZeedZdZ d d ZdS) PivotHierarchypivotHierarchyTrBr)r-r)rrNr$c||_||_||_||_||_||_||_||_| |_| |_ | |_ | |_ | |_ ||_ dSr)outlinemultipleItemSelectionAllowed subtotalTopshowInFieldList dragToRow dragToCol dragToPage dragToDatadragOffincludeNewItemsInFiltercaptionrrr)rrrrrrrrrrrrrrrs rrzPivotHierarchy.__init__ sn  ,H)&.""$$ '>$   r)NNNNNNNNNNNr$NN)r r!r"r#r rrrrrrrrrrr rrrrrrrr rr5rr$rrrrsGdffG#'466 $&&KdffOIIJJdffG"dfff%%%G .~T B B BCe*>>>G U4 @ @ @F&L.2!!%  )-rrc eZdZdZedZedZedZedZ edZ edZ edZ edZ edZedZedZedZedZedZedZedZeeZeedZdZ d d Zed ZdS) Reference referenceTrBr(rxNr$c||_||_||_||_||_||_||_| |_| |_| |_ | |_ | |_ ||_ ||_ ||_||_||_dSr)rselected byPositionrelativedefaultSubtotal sumSubtotalcountASubtotal avgSubtotal maxSubtotal minSubtotalproductSubtotal countSubtotalstdDevSubtotalstdDevPSubtotal varSubtotal varPSubtotalr)rrr-rrrrrrrrrrrrrrrrrs rrzReference.__init__Fs*   $  .&,&&&.*,.&(rc*t|jSr)r1rr2s rr-zReference.countns4:r)NNNNNNNNNNNNNNNNNr$N) r r!r"r#rrr rrrrrrrrrrrrrrrr rrrr rr5rr7r-r$rrrr-sG Gt $ $ $Ett$$$H&&&Jtt$$$Hdd+++O$$'''KTT***N$$'''K$$'''K$$'''Kdd+++ODD)))MTT***Ndd+++O$$'''K44(((Lu%%%A U4 @ @ @FL !%! $!!!!%# $!%!"'%%%%PXrrceZdZdZeedZeedZ e dZ e gdZ edZedZedZedZedZedZedZedZe gdZe dZd Z dd Zd S) PivotArea pivotAreaTrrrB)normaldataalloriginbuttontopEndtopRightraxisRowaxisColaxisPage axisValues) referencesr$Nrc||_||_||_||_||_||_||_||_| |_| |_ | |_ | |_ | |_ ||_ dSr)rrrrdataOnly labelOnlygrandRowgrandCol cacheIndexroffsetcollapsedLevelsAreSubtotalsaxis fieldPosition)rrrrrrrrrrrrrrrs rrzPivotArea.__init__sn %     "    $  +F( *r)r$NNrTNNNNTNNNN)r r!r"r#rrrrr rrrrrr rrrrrrr rrrrr5rr$rrrrssyGitDDDJ U4 @ @ @F Gt $ $ $E 7222 4 4 4Dtt$$$H%%%Itt$$$Htt$$$H&&&Jdd###G Vt $ $ $F"&$$"7"7"7 7KKK M M MDGt,,,M"L -1#++++++rrczeZdZdZeZeZeZe e Z dZ ddZ dS) ChartFormat chartFormatr(rNc>||_||_||_||_dSr)chartformatseriesr)rrrrrs rrzChartFormat.__init__s$    "r)NNNN)r r!r"r#rrrr rrrrr5rr$rrrrssG GIIE WYYF TVVFI000I!L # # # # # #rrceZdZdZegdZegdZeZ e e Z e edZdZ d d Zd S)ConditionalFormatconditionalFormat) selectionrrr)rrowcolumnr(Tr) pivotAreasrNr$cL||_||_||_||_||_dSr)scoperpriorityrr)rrrr rrs rrzConditionalFormat.__init__s+    $ r)rNNr$N)r r!r"r#rrrrrr rrrrr rr5rr$rrrrs!G C666 8 8 8E 7333 5 5 5DwyyHi888J U4 @ @ @F"L#      rrcjeZdZdZeeZdZd dZdZ dZ e d Z d fd Z xZS) ConditionalFormatListconditionalFormatsr(r,r$Nc||_dSr)r)rrr-s rrzConditionalFormatList.__init__s!2rci}|jD]3}|jD])}|jD]}|jD]}|j|jf}|||< *4|S)z Return a dictionary of format objects keyed by (field id and format property). This can be used to map the formats to field but also to dedupe to match worksheet definitions which are grouped by cell range )rrrrvr )rfmtsfmtarearefrkeys r by_priorityz!ConditionalFormatList.by_prioritys}) ( (C ( (?((C!$(($w 5$'S (( (  rc|}dt|dD}|r(t||_dSdS)ar Group formats by field index and priority. Sorted to match sorting and grouping for corresponding worksheet formats The implemtenters notes contain significant deviance from the OOXML specification, in particular how conditional formats in tables relate to those defined in corresponding worksheets and how to determine which format applies to which fields. There are some magical interdependencies: * Every pivot table fmt must have a worksheet cxf with the same priority. * In the reference part the field 4294967294 refers to a data field, the spec says -2 * Data fields are referenced by the 0-index reference.x.v value Things are made more complicated by the fact that field items behave diffently if the parent is a reference or shared item: "In Office if the parent is the reference element, then restrictions of this value are defined by reference@field. If the parent is the tables element, then this value specifies the index into the table tag position in @url." Yeah, right! c i|] \\}}}|| Sr$r$).0rr rs r z1ConditionalFormatList._dedupe..s$[[[4/uhc[[[rT)reverseN)rsorteditemslistrr)rrs r_dedupezConditionalFormatList._dedupesq4!!\[tzz||UY8Z8Z8Z[[[  9%)$++--%8%8D " " " 9 9rc*t|jSr)r1rr2s rr-zConditionalFormatList.countr3rcn|t|Sr)rsuperto_tree)rr# __class__s rr"zConditionalFormatList.to_tree!s& www'''r)r$Nr)r r!r"r#r rrr6rrrr7r-r" __classcell__r#s@rr r s"G /@AAAI3333$!9!9!9H++X+((((((((((rr ceZdZdZegdZedZee Z ee dZ dZ d d Zd S) Formatr)blank formattingdrillformularTrBr(rrr)Nc>||_||_||_||_dSr)actiondxfIdrr)rr-r.rrs rrzFormat.__init__1s$   " r)r)NNN)r r!r"r#rr-rr.rrrr rr5rr$rrr'r'&sG WHHH J J JF Gt $ $ $EI000I U4 @ @ @F!L%      rr'ceZdZdZedZeZegdZ egdZ eZ eZ edZ eedZdZ ddZd S) DataField dataFieldTrB) averager- countNumsmaxminproductstdDevstdDevprFvarvarpr) r differencerE percentDiffrunTotal percentOfRow percentOfColpercentOfTotalindexrr$NrFrc v||_||_||_||_||_||_||_||_dSr)rrsubtotal showDataAs baseFieldbaseItemnumFmtIdr) rrrrErFrGrHrIrs rrzDataField.__init__Ps@   $"     r)NNrFrrBrCNN)r r!r"r#r rrrrrErFrGrHrIrr rr5rr$rrr0r0=sG 6T " " "D '))CsRRRTTTH999;;;J IwyyHw$'''H U4 @ @ @FL$!rr0ceZdZdZeZedZedZedZ edZ e e dZ dZ ddZdS) PageField pageFieldTrBrr$NcZ||_||_||_||_||_||_dSr)ritemhierrcapr)rrrNrOrrPrs rrzPageField.__init__qs2    rr)r r!r"r#rrrNrOr rrPrr rr5rr$rrrKrKdsG '))C 7d # # #D 7d # # #D 6T " " "D &D ! ! !C U4 @ @ @FL      rrKceZdZdZegdZeZeZe e dZ dZ d d Z d S) RowColItemirdefaultrFcountAavgr4r5r6r-r7stdDevPr9varPgrandr(rrrrrrr$c>||_||_||_||_dSr)trrSr)rr\r]rSrs rrzRowColItem.__init__s$ rN)rrrr$)r r!r"r#rr\rr]rSr rrr5rr$rrrRrRsG    A  A Au444AL      rrRc0eZdZdZeZ ddZdS) RowColFieldrNc||_dSrr)rrs rrzRowColField.__init__srr)r r!r"r#rrrr$rrr_r_s=G Arr_c4eZdZeeZdZ ddZdS) AutoSortScoper(rNc||_dSrr)rrs rrzAutoSortScope.__init__s#rr)r r!r"rrrr5rr$rrrbrbsDI000I!L ######rrbc<eZdZdZedZegdZedZ edZ edZ edZ edZ edZedZedZedZ d dZdS) FieldItemrNTrBrTrNrc ||_||_||_||_||_||_||_||_| |_| |_ | |_ dSr) nr\hssdfmcrde) rrgr\rhrirjrkrlrmrrnros rrzFieldItem.__init__sUr) NrNNTNNNNNN)r r!r"r#r rgrr\r rhrirjrkrlrmrrrnrorr$rrreres+G$A    A A A    B A A A4   A A ArrecZeZdZdZeedZeedZ ee dZ e dZ egdZedZe dZedZedZe dZedZedZedZedZedZedZedZedZedZedZ edZ!edZ"edZ#edZ$edZ%edZ&edZ'edZ(edZ)edZ*edZ+e,gdZ-edZ.edZ/edZ0edZ1edZ2edZ3edZ4edZ5edZ6edZ7edZ8edZ9edZ:edZ;edZ<edZ=edZ>edZ?edZ@d ZA ddZBd S) PivotField pivotFieldTrrrBrr)manual ascending descending)r autoSortScoper$N rsc4||_||_||_||_||_||_||_||_| |_| |_ | |_ | |_ | |_ ||_ ||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_| |_|!|_ |"|_!|#|_"|$|_#|%|_$|&|_%|'|_&|(|_'|)|_(|*|_)|+|_*|,|_+|-|_,|.|_-|/|_.|0|_/|1|_0|2|_1dSr)2rrvrrr1subtotalCaption showDropDowns hiddenLeveluniqueMemberPropertycompact allDrilledrIrrrrrrrrshowAllinsertBlankRow serverFieldinsertPageBreakautoShow topAutoShow hideNewItems measureFilterr itemPageCountsortTypedataSourceSortnonAutoSortDefaultrankByrrrrrrrrrrrr showPropCell showPropTipshowPropAsCaptiondefaultAttributeDrillState)4rrrvrrr1ryrzr{r|r}r~rIrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrs4 rrzPivotField.__init__sj *  ".*&$8! $   &"",H)$$  ,&.  &(*'>$*  ,"4 .&,&&&.*,.&((&!2*D'''r)3r$NNNNNTNNTNNTTTTNTTTTNNNNTNNNrwrsNNNTNNNNNNNNNNNNNNNN)Cr r!r"r#rrerrrbrvr rr rrrr r1ryrzr{r|r}r~rrIrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr5rr$rrrqrqsG N$ ? ? ?EE $GGGM U4 @ @ @F 6T " " "D 7KKK M M MD%%%If---ODD)))M$$'''K!6T222dd###G&&&Jw$'''Hdd###G$$'''K%%%I%%%I#'44#8#8#8 &&&J&&&Jdd###Gdd###GTT***N$$'''Kdd+++Ott$$$H$$'''K44(((LDD)))M"dd333Gt,,,Ms@@@BBBHTT***N... W % % %Fdd+++O$$'''KTT***N$$'''K$$'''K$$'''Kdd+++ODD)))MTT***Ndd+++O$$'''K44(((L44(((L$$'''K---!%!6!6!6.L#!%#!&* !.2   $!!%!"#)-!" $$(!%! $!!!!%# $!%!""!#',0gfEfEfEfEfEfErrqceZdZdZeZeZeZeZ edZ edZ ddZ dS)LocationlocationTrBNcZ||_||_||_||_||_||_dSr)rfirstHeaderRow firstDataRow firstDataCol rowPageCount colPageCount)rrrrrrrs rrzLocation.__init__s9,((((rr) r r!r"r#r rrrrrrrrr$rrrrsG &((CWYYN799L799L7d+++L7d+++L $"""" ) ) ) ) ) )rrcxeZdZdZdZdZdZdZdZe Z e Z e Ze dZe Ze dZe dZe Ze dZe Ze dZe dZe dZe dZe Ze Ze Ze Ze Ze Ze Z e Z!e Z"e Z#e Z$e Z%e Z&e Z'e Z(e Z)e Z*e Z+e Z,e Z-e Z.e Z/e Z0e Z1e Z2e Z3e Z4e Z5e Z6e Z7e Z8e Z9e Z:e Z;e Z<e Z=e Z>e Z?e Z@e ZAe ZBe ZCe dZDe dZEe ZFe ZGe dZHe dZIe ZJe ZKe ZLe ZMe ZNe ZOePeQ ZReSeTd ZUeSeVd ZWeSeXd ZYeSeVd ZZeSeXd Z[eSe\d Z]eSe^d Z_eSe`d ZaePebd ZceSedd ZeeSefd ZgePehd ZieSejd ZkePeld ZmePend ZoePepd ZqerZsd Zt ddZufdZvewdZxdZydZzdZ{ewdZ|xZ}S)TableDefinitionzJapplication/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xmlzNhttp://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTablerz!/xl/pivotTables/pivotTable{0}.xmlpivotTableDefinitionNTrBr(rr)r pivotFields rowFieldsrowItems colFieldscolItems pageFields dataFieldsformatsr  chartFormatspivotHierarchiesrfiltersr:r'Frr$cW||_||_||_||_||_||_||_||_| |_| |_ | |_ | |_ | |_ ||_ ||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_||_| |_|!|_ |"|_!|#|_"|$|_#|%|_$|&|_%|'|_&|(|_'|)|_(|*|_)|+|_*|,|_+|-|_,|.|_-|/|_.|0|_/|1|_0|2|_1|3|_2|4|_3|5|_4|6|_5|7|_6|8|_7|9|_8|:|_9|;|_:|<|_;|=|_<|>|_=|?|_>|@|_?|A|_@|B|_A|C|_B|D|_C|E|_D|F|_E|G|_F|H|_G|I|_H|J|_I|K|_J|L|_K|M|_L|N|_Md|_M|O|_N|P|_O|Q|_P|R|_Q|S|_R|T|_S|U|_T|V|_UdSr)VrcacheId dataOnRows dataPosition dataCaptiongrandTotalCaption errorCaption showErrormissingCaption showMissing pageStylepivotTableStyle vacatedStyletagupdatedVersionminRefreshableVersionasteriskTotals showItemseditDatadisableFieldList showCalcMbrs visualTotalsshowMultipleLabelshowDataDropDown showDrill printDrillshowMemberPropertyTips showDataTips enableWizard enableDrillenableFieldPropertiespreserveFormattinguseAutoFormattingpageWrappageOverThenDownsubtotalHiddenItemsrowGrandTotalscolGrandTotalsfieldPrintTitlesitemPrintTitles mergeItem showDropZonescreatedVersionindent showEmptyRow showEmptyCol showHeadersr}r outlineData compactData published gridDropZones immersivemultipleFieldFiltersrrowHeaderCaptioncolHeaderCaptionfieldListSortAscending mdxSubqueriescustomListSort autoFormatIdapplyNumberFormatsapplyBorderFormatsapplyFontFormatsapplyPatternFormatsapplyAlignmentFormatsapplyWidthHeightFormatsrrrrrrrrrr rrrrr:r'rr)Wrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr}rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr rrrrr:r'rrsW rrzTableDefinition.__init__sp  $(&!2(",&".(,%:","  0((!2 0"$&<#((&%:""4!2  0#6 ,, 0."*, ((&  &&"*"$8!& 0 0&<#*,("4"4 0#6 %:"'>$  &"  "  $$ "4"&( 0#6  #6 #6  rc~t}|dt|S)Nxmlns)r!r"setr)rtreer#s rr"zTableDefinition.to_trees/ww   -((( rc@|j|jSr)_pathr_idr2s rpathzTableDefinition.pathsz  ***rc|||t|}||jdd|||dS)z4 Add to zipfile and update manifest rN) _write_relsrr"writestrrappend)rarchivemanifestxmls r_writezTableDefinition._writesg (+++t||~~&&122,,,rc|jdSt}t|jj|jj}|||j|_|jjdd|vr|j||t|j}t| }| |dd|dS)z@ Write the relevant child objects and add links N)TypeTargetr) cacherrrel_typerrrnamelistrrrr"r)rrrrelsr]rrs rrzTableDefinition._write_relss :  F!! dj1$*/ J J J A$ :?122 g&6&6&8&8 8 8 J  gx 0 0 0TY''t||~~&&abb3'''''rc|jsiStt}|jD]2\}}|j|j}|||3|S)z8Map fields to associated conditional formats by priority)r rrrrrr)rfieldsidxpriors rformatted_fieldsz TableDefinition.formatted_fieldssp& IT""0<<>> & &IC?3',D 4L   % % % % rc>|jdt|jS)z; Provide a simplified summary of the table  )rdictrr2s rsummaryzTableDefinition.summarys$ )33d4=11333r)VNNFNNNNFNTNNNNrrFTFFTTTTTFTTTTTTFrFFTTFFFTrrFFTTFFTFFTNrNNNNNNFFFFFFNr$r$r$r$r$r$r$r$Nr$r$Nr$NNNN)~r r!r" mime_typerrrr#rr rrrr rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr}rrrrrrrrrrrrrrrrrrrrrrrrrqrr_rrRrrrrKrr0rr'rr r rrrrrrr@rr9r:r&r'r rr rr5rr"r7rrrrrr$r%s@rrrs\I_H C /E$G E 688DgiiGJ7d+++L&((K$///6T***LIVt,,,N$&&K$'''If---O6T***L &D ! ! !CWYYN#GIITVVNItvvHtvv466L466LtvvIJ!TVV466L466L$&&K DFFwyyHtvv$&&TVVNTVVNtvvdffOIDFFMWYYN WYYF466L466L$&&KdffGdffG$&&K$&&KIDFFMI466'))Kv...v...!TVVDFFMTT***N7d+++Ltvv$&& DFF"dffu8...H .zFFFK[EEEI~JdCCCH[EEEI~JdCCCHitDDDJitDDDJn6>>>G-BtTTT!> 4HHHL%~N$OOO%o$OOOn;dCCCG%.AdSSS%.AdSSS U4 @ @ @F B,L!"!#'" $!!%" !'( %"'""#'"&!(,""!'+$(#("'%* $ $"'!& # !##!"! $&*"&"&(,# $"$)$)"'%*',).$( "$%)%)%)mnnnnb ++X+(((&44X44444rrN)5 collectionsr!openpyxl.descriptors.serialisableropenpyxl.descriptorsrrrrr r r openpyxl.descriptors.excelr r openpyxl.descriptors.sequenceropenpyxl.xml.constantsropenpyxl.xml.functionsropenpyxl.packaging.relationshiprrrrropenpyxl.worksheet.filtersrrr&r9r@rrrrrrrrrr r'r0rKrRr_rbrerqrrr$rrrsp$#####::::::                    ?>>>>>>>888888000000++++++  - - - - -\ - - -+++++,+++*+++++,+++(<%<%<%<%<%,<%<%<%~     <   -----l---6        ,!!!!!\!!!H22222\222jCCCCC CCCL3+3+3+3+3+ 3+3+3+l#####,###. 4I(I(I(I(I(LI(I(I(X\.$$$$$ $$$N :2     ,    # # # # #L # # #))))) )))X`E`E`E`E`E`E`E`EF)))))|)))6Q4Q4Q4Q4Q4lQ4Q4Q4Q4Q4r