summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2017-08-30 21:01:36 +0200
committerTamás Zolnai <tamas.zolnai@collabora.com>2017-08-30 21:01:36 +0200
commitcfff9e0d3f73405d7992d6ec825503ea41de7d5a (patch)
tree1cc6e1393ee6506bfdababcad8e6df130fdffe5d
parent9e28ecdd0d41f60f431ff4db9a30920d15da631b (diff)
XLS dumper: SXCView dump improvements
-rw-r--r--msodumper/xlsrecord.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/msodumper/xlsrecord.py b/msodumper/xlsrecord.py
index f87187f..1103e2c 100644
--- a/msodumper/xlsrecord.py
+++ b/msodumper/xlsrecord.py
@@ -3114,10 +3114,12 @@ class XLUnicodeStringSegmentedSXAddl(object):
def __init__ (self, strm):
self.cchTotal = strm.readUnsignedInt(4)
strm.readBytes(2) # ignored
+ self.viewName = strm.readXLUnicodeString()
def appendLines (self, hdl):
if self.cchTotal <= 65535:
hdl.appendLineInt("cchTotal", self.cchTotal)
+ hdl.appendLineString("Referenced pivot table view", self.viewName)
class DConName(BaseRecordHandler):
@@ -3232,6 +3234,7 @@ class SXAddlInfo(BaseRecordHandler):
}
def __parseBytes (self):
+ self.rt = self.readUnsignedInt(2) # ignored
self.flags = FrtFlags(self) # ignored
self.sxc = self.readUnsignedInt(1)
self.sxd = self.readUnsignedInt(1)
@@ -3244,10 +3247,32 @@ class SXAddlInfo(BaseRecordHandler):
if self.sxd == 0x00:
# sxdId
self.__parseSxcViewSxdId()
+ elif self.sxd == 0x19:
+ # sxdVer12Info
+ self.__parseSxcViewsxdVer12Info()
def __parseSxcViewSxdId (self):
self.stName = XLUnicodeStringSegmentedSXAddl(self)
+ def __parseSxcViewsxdVer12Info (self):
+ versionflags = self.readUnsignedInt(4)
+ self.fDefaultCompact = (versionflags & 0x00000001) != 0
+ self.fDefaultOutline = (versionflags & 0x00000002) != 0
+ self.fOutlineData = (versionflags & 0x00000004) != 0
+ self.fCompactData = (versionflags & 0x00000008) != 0
+ self.fNewDropZones = (versionflags & 0x00000010) != 0
+ self.fPublished = (versionflags & 0x00000020) != 0
+ self.fTurnOffImmersive = (versionflags & 0x00000040) != 0
+ self.fSingleFilterPerField = (versionflags & 0x00000080) != 0
+ self.fNonDefaultSortInFlist = (versionflags & 0x00000100) != 0
+ self.fDontUseCustomLists = (versionflags & 0x00000400) != 0
+ self.fHideDrillIndicators = (versionflags & 0x00100000) != 0
+ self.fPrintDrillIndicators = (versionflags & 0x00200000) != 0
+ self.fMemPropsInTips = (versionflags & 0x00400000) != 0
+ self.fNoPivotTips = (versionflags & 0x00800000) != 0
+ self.fNoHeaders = (versionflags & 0x80000000) != 0
+ self.readUnsignedInt(2) # ignored
+
def parseBytes (self):
self.__parseBytes()
self.appendLineString("classs name", globals.getValueOrUnknown(SXAddlInfo.SxcClassList, self.sxc))
@@ -3257,6 +3282,23 @@ class SXAddlInfo(BaseRecordHandler):
if self.sxd == 0x00:
# sxdId
self.stName.appendLines(self)
+ elif self.sxd == 0x19:
+ # sxdVer12Info
+ self.appendLineBoolean("fDefaultCompact", self.fDefaultCompact)
+ self.appendLineBoolean("fDefaultOutline", self.fDefaultOutline)
+ self.appendLineBoolean("fOutlineData", self.fOutlineData)
+ self.appendLineBoolean("fCompactData", self.fCompactData)
+ self.appendLineBoolean("fNewDropZones", self.fNewDropZones)
+ self.appendLineBoolean("fPublished", self.fPublished)
+ self.appendLineBoolean("fTurnOffImmersive", self.fTurnOffImmersive)
+ self.appendLineBoolean("fSingleFilterPerField", self.fSingleFilterPerField)
+ self.appendLineBoolean("fNonDefaultSortInFlist", self.fNonDefaultSortInFlist)
+ self.appendLineBoolean("fDontUseCustomLists", self.fDontUseCustomLists)
+ self.appendLineBoolean("fHideDrillIndicators", self.fHideDrillIndicators)
+ self.appendLineBoolean("fPrintDrillIndicators", self.fPrintDrillIndicators)
+ self.appendLineBoolean("fMemPropsInTips", self.fMemPropsInTips)
+ self.appendLineBoolean("fNoPivotTips", self.fNoPivotTips)
+ self.appendLineBoolean("fNoHeaders", self.fNoHeaders)
class SXDb(BaseRecordHandler):