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

1# Copyright (c) 2010-2022 openpyxl 

2 

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) 

17 

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 

29 

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) 

45 

46 

47class HierarchyUsage(Serialisable): 

48 

49 tagname = "hierarchyUsage" 

50 

51 hierarchyUsage = Integer() 

52 

53 def __init__(self, 

54 hierarchyUsage=None, 

55 ): 

56 self.hierarchyUsage = hierarchyUsage 

57 

58 

59class ColHierarchiesUsage(Serialisable): 

60 

61 tagname = "colHierarchiesUsage" 

62 

63 colHierarchyUsage = Sequence(expected_type=HierarchyUsage, ) 

64 

65 __elements__ = ('colHierarchyUsage',) 

66 __attrs__ = ('count', ) 

67 

68 def __init__(self, 

69 count=None, 

70 colHierarchyUsage=(), 

71 ): 

72 self.colHierarchyUsage = colHierarchyUsage 

73 

74 

75 @property 

76 def count(self): 

77 return len(self.colHierarchyUsage) 

78 

79 

80class RowHierarchiesUsage(Serialisable): 

81 

82 tagname = "rowHierarchiesUsage" 

83 

84 rowHierarchyUsage = Sequence(expected_type=HierarchyUsage, ) 

85 

86 __elements__ = ('rowHierarchyUsage',) 

87 __attrs__ = ('count', ) 

88 

89 def __init__(self, 

90 count=None, 

91 rowHierarchyUsage=(), 

92 ): 

93 self.rowHierarchyUsage = rowHierarchyUsage 

94 

95 @property 

96 def count(self): 

97 return len(self.rowHierarchyUsage) 

98 

99 

100class PivotFilter(Serialisable): 

101 

102 tagname = "filter" 

103 

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) 

131 

132 __elements__ = ('autoFilter',) 

133 

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 

161 

162 

163class PivotFilters(Serialisable): 

164 

165 count = Integer() 

166 filter = Typed(expected_type=PivotFilter, allow_none=True) 

167 

168 __elements__ = ('filter',) 

169 

170 def __init__(self, 

171 count=None, 

172 filter=None, 

173 ): 

174 self.filter = filter 

175 

176 

177class PivotTableStyle(Serialisable): 

178 

179 tagname = "pivotTableStyleInfo" 

180 

181 name = String(allow_none=True) 

182 showRowHeaders = Bool() 

183 showColHeaders = Bool() 

184 showRowStripes = Bool() 

185 showColStripes = Bool() 

186 showLastColumn = Bool() 

187 

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 

202 

203 

204class MemberList(Serialisable): 

205 

206 tagname = "members" 

207 

208 level = Integer(allow_none=True) 

209 member = NestedSequence(expected_type=String, attribute="name") 

210 

211 __elements__ = ('member',) 

212 

213 def __init__(self, 

214 count=None, 

215 level=None, 

216 member=(), 

217 ): 

218 self.level = level 

219 self.member = member 

220 

221 @property 

222 def count(self): 

223 return len(self.member) 

224 

225 

226class MemberProperty(Serialisable): 

227 

228 tagname = "mps" 

229 

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

239 

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 

260 

261 

262class PivotHierarchy(Serialisable): 

263 

264 tagname = "pivotHierarchy" 

265 

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) 

280 

281 __elements__ = ('mps', 'members',) 

282 

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 

313 

314 

315class Reference(Serialisable): 

316 

317 tagname = "reference" 

318 

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) 

337 

338 __elements__ = ('x',) 

339 

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 

378 

379 

380 @property 

381 def count(self): 

382 return len(self.field) 

383 

384 

385class PivotArea(Serialisable): 

386 

387 tagname = "pivotArea" 

388 

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) 

404 

405 __elements__ = ('references',) 

406 

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 

437 

438 

439class ChartFormat(Serialisable): 

440 

441 tagname = "chartFormat" 

442 

443 chart = Integer() 

444 format = Integer() 

445 series = Bool() 

446 pivotArea = Typed(expected_type=PivotArea, ) 

447 

448 __elements__ = ('pivotArea',) 

449 

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 

460 

461 

462class ConditionalFormat(Serialisable): 

463 

464 tagname = "conditionalFormat" 

465 

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) 

471 

472 __elements__ = ('pivotAreas',) 

473 

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 

486 

487 

488class Format(Serialisable): 

489 

490 tagname = "format" 

491 

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) 

496 

497 __elements__ = ('pivotArea',) 

498 

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 

509 

510 

511class DataField(Serialisable): 

512 

513 tagname = "dataField" 

514 

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) 

526 

527 __elements__ = () 

528 

529 

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 

548 

549 

550class PageField(Serialisable): 

551 

552 tagname = "pageField" 

553 

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) 

560 

561 __elements__ = () 

562 

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 

577 

578 

579class RowColItem(Serialisable): 

580 

581 tagname = "i" 

582 

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

589 

590 __elements__ = ('x',) 

591 

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 

602 

603 

604class RowColField(Serialisable): 

605 

606 tagname = "field" 

607 

608 x = Integer() 

609 

610 def __init__(self, 

611 x=None, 

612 ): 

613 self.x = x 

614 

615 

616class AutoSortScope(Serialisable): 

617 

618 pivotArea = Typed(expected_type=PivotArea, ) 

619 

620 __elements__ = ('pivotArea',) 

621 

622 def __init__(self, 

623 pivotArea=None, 

624 ): 

625 self.pivotArea = pivotArea 

626 

627 

628class FieldItem(Serialisable): 

629 

630 tagname = "item" 

631 

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) 

645 

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 

670 

671 

672class PivotField(Serialisable): 

673 

674 tagname = "pivotField" 

675 

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) 

727 

728 __elements__ = ('items', 'autoSortScope',) 

729 

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 

833 

834 

835class Location(Serialisable): 

836 

837 tagname = "location" 

838 

839 ref = String() 

840 firstHeaderRow = Integer() 

841 firstDataRow = Integer() 

842 firstDataCol = Integer() 

843 rowPageCount = Integer(allow_none=True) 

844 colPageCount = Integer(allow_none=True) 

845 

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 

860 

861 

862class TableDefinition(Serialisable): 

863 

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" 

868 

869 tagname = "pivotTableDefinition" 

870 cache = None 

871 

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

958 

959 __elements__ = ('location', 'pivotFields', 'rowFields', 'rowItems', 

960 'colFields', 'colItems', 'pageFields', 'dataFields', 'formats', 

961 'conditionalFormats', 'chartFormats', 'pivotHierarchies', 

962 'pivotTableStyleInfo', 'filters', 'rowHierarchiesUsage', 

963 'colHierarchiesUsage',) 

964 

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 

1139 

1140 

1141 def to_tree(self): 

1142 tree = super(TableDefinition, self).to_tree() 

1143 tree.set("xmlns", SHEET_MAIN_NS) 

1144 return tree 

1145 

1146 

1147 @property 

1148 def path(self): 

1149 return self._path.format(self._id) 

1150 

1151 

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) 

1160 

1161 

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 

1168 

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) 

1175 

1176 path = get_rels_path(self.path) 

1177 xml = tostring(rels.to_tree()) 

1178 archive.writestr(path[1:], xml)