mirror of
https://github.com/aykhans/AzSuicideDataVisualization.git
synced 2025-04-22 02:23:48 +00:00
112 lines
2.6 KiB
Python
112 lines
2.6 KiB
Python
# Copyright (c) 2010-2022 openpyxl
|
|
|
|
from openpyxl.descriptors.serialisable import Serialisable
|
|
from openpyxl.descriptors import (
|
|
Typed,
|
|
Integer,
|
|
Sequence,
|
|
)
|
|
from openpyxl.descriptors.sequence import (
|
|
MultiSequence,
|
|
MultiSequencePart,
|
|
)
|
|
from openpyxl.descriptors.excel import ExtensionList
|
|
from openpyxl.descriptors.nested import (
|
|
NestedInteger,
|
|
NestedBool,
|
|
)
|
|
|
|
from openpyxl.xml.constants import SHEET_MAIN_NS
|
|
from openpyxl.xml.functions import tostring
|
|
|
|
from .fields import (
|
|
Boolean,
|
|
Error,
|
|
Missing,
|
|
Number,
|
|
Text,
|
|
TupleList,
|
|
DateTimeField,
|
|
Index,
|
|
)
|
|
|
|
|
|
class Record(Serialisable):
|
|
|
|
tagname = "r"
|
|
|
|
_fields = MultiSequence()
|
|
m = MultiSequencePart(expected_type=Missing, store="_fields")
|
|
n = MultiSequencePart(expected_type=Number, store="_fields")
|
|
b = MultiSequencePart(expected_type=Boolean, store="_fields")
|
|
e = MultiSequencePart(expected_type=Error, store="_fields")
|
|
s = MultiSequencePart(expected_type=Text, store="_fields")
|
|
d = MultiSequencePart(expected_type=DateTimeField, store="_fields")
|
|
x = MultiSequencePart(expected_type=Index, store="_fields")
|
|
|
|
|
|
def __init__(self,
|
|
_fields=(),
|
|
m=None,
|
|
n=None,
|
|
b=None,
|
|
e=None,
|
|
s=None,
|
|
d=None,
|
|
x=None,
|
|
):
|
|
self._fields = _fields
|
|
|
|
|
|
class RecordList(Serialisable):
|
|
|
|
mime_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml"
|
|
rel_type = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheRecords"
|
|
_id = 1
|
|
_path = "/xl/pivotCache/pivotCacheRecords{0}.xml"
|
|
|
|
tagname ="pivotCacheRecords"
|
|
|
|
r = Sequence(expected_type=Record, allow_none=True)
|
|
extLst = Typed(expected_type=ExtensionList, allow_none=True)
|
|
|
|
__elements__ = ('r', )
|
|
__attrs__ = ('count', )
|
|
|
|
def __init__(self,
|
|
count=None,
|
|
r=(),
|
|
extLst=None,
|
|
):
|
|
self.r = r
|
|
self.extLst = extLst
|
|
|
|
|
|
@property
|
|
def count(self):
|
|
return len(self.r)
|
|
|
|
|
|
def to_tree(self):
|
|
tree = super(RecordList, self).to_tree()
|
|
tree.set("xmlns", SHEET_MAIN_NS)
|
|
return tree
|
|
|
|
|
|
@property
|
|
def path(self):
|
|
return self._path.format(self._id)
|
|
|
|
|
|
def _write(self, archive, manifest):
|
|
"""
|
|
Write to zipfile and update manifest
|
|
"""
|
|
xml = tostring(self.to_tree())
|
|
archive.writestr(self.path[1:], xml)
|
|
manifest.append(self)
|
|
|
|
|
|
def _write_rels(self, archive, manifest):
|
|
pass
|