[Libreoffice-commits] .: src/xlsrecord.py src/xlsstream.py
Kohei Yoshida
kohei at kemper.freedesktop.org
Mon Feb 27 19:01:37 PST 2012
src/xlsrecord.py | 106 ++++++++++++++++++++++++-------------------------------
src/xlsstream.py | 2 -
2 files changed, 49 insertions(+), 59 deletions(-)
New commits:
commit 21b82dc9ca6c869699f4ab759361fe4b76b028c3
Author: Kohei Yoshida <kohei.yoshida at suse.com>
Date: Mon Feb 27 22:00:52 2012 -0500
Re-did handler for SXVD record. SXVD record stores pivot table field data.
diff --git a/src/xlsrecord.py b/src/xlsrecord.py
index 4e7d99c..55ea471 100644
--- a/src/xlsrecord.py
+++ b/src/xlsrecord.py
@@ -3258,66 +3258,56 @@ class SXViewSource(BaseRecordHandler):
self.appendLine("data source type: %s"%srcType)
-class SXViewFields(BaseRecordHandler):
+class Sxvd(BaseRecordHandler):
- def parseBytes (self):
- axis = globals.getSignedInt(self.readBytes(2))
- subtotalCount = globals.getSignedInt(self.readBytes(2))
- subtotalType = globals.getSignedInt(self.readBytes(2))
- itemCount = globals.getSignedInt(self.readBytes(2))
- nameLen = globals.getSignedInt(self.readBytes(2))
-
- axisType = 'unknown'
- if axis == 0:
- axisType = 'no axis'
- elif axis == 1:
- axisType = 'row'
- elif axis == 2:
- axisType = 'column'
- elif axis == 4:
- axisType = 'page'
- elif axis == 8:
- axisType = 'data'
-
- subtotalTypeName = 'unknown'
- if subtotalType == 0x0000:
- subtotalTypeName = 'None'
- elif subtotalType == 0x0001:
- subtotalTypeName = 'Default'
- elif subtotalType == 0x0002:
- subtotalTypeName = 'Sum'
- elif subtotalType == 0x0004:
- subtotalTypeName = 'CountA'
- elif subtotalType == 0x0008:
- subtotalTypeName = 'Average'
- elif subtotalType == 0x0010:
- subtotalTypeName = 'Max'
- elif subtotalType == 0x0020:
- subtotalTypeName = 'Min'
- elif subtotalType == 0x0040:
- subtotalTypeName = 'Product'
- elif subtotalType == 0x0080:
- subtotalTypeName = 'Count'
- elif subtotalType == 0x0100:
- subtotalTypeName = 'Stdev'
- elif subtotalType == 0x0200:
- subtotalTypeName = 'StdevP'
- elif subtotalType == 0x0400:
- subtotalTypeName = 'Var'
- elif subtotalType == 0x0800:
- subtotalTypeName = 'VarP'
-
- self.appendLine("axis type: %s"%axisType)
- self.appendLine("number of subtotals: %d"%subtotalCount)
- self.appendLine("subtotal type: %s"%subtotalTypeName)
- self.appendLine("number of items: %d"%itemCount)
-
- if nameLen == -1:
- self.appendLine("name: null (use name in the cache)")
- else:
- name, nameLen = globals.getRichText(self.readRemainingBytes(), nameLen)
- self.appendLine("name: %s"%name)
+ def __parseBytes (self):
+ flag = self.readUnsignedInt(2)
+ self.sxaxisRw = (flag & 0x0001) != 0
+ self.sxaxisCol = (flag & 0x0002) != 0
+ self.sxaxisPage = (flag & 0x0004) != 0
+ self.sxaxisData = (flag & 0x0008) != 0
+ self.cSub = self.readUnsignedInt(2)
+ flag = self.readUnsignedInt(2)
+ self.fDefault = (flag & 0x0001) != 0 # A
+ self.fSum = (flag & 0x0002) != 0 # B
+ self.fCounta = (flag & 0x0004) != 0 # C
+ self.fAverage = (flag & 0x0008) != 0 # D
+ self.fMax = (flag & 0x0010) != 0 # E
+ self.fMin = (flag & 0x0020) != 0 # F
+ self.fProduct = (flag & 0x0040) != 0 # G
+ self.fCount = (flag & 0x0080) != 0 # H
+ self.fStdev = (flag & 0x0100) != 0 # I
+ self.fStdevp = (flag & 0x0200) != 0 # J
+ self.fVariance = (flag & 0x0400) != 0 # K
+ self.fVariancep = (flag & 0x0800) != 0 # L
+ self.cItm = self.readSignedInt(2)
+ cchName = self.readUnsignedInt(2)
+ self.stName = '(null)'
+ if cchName != 0xFFFF:
+ self.stName = self.readXLUnicodeStringNoCch(cchName)
+ def parseBytes (self):
+ self.__parseBytes()
+ self.appendLine("axes type")
+ self.appendLineBoolean(" row", self.sxaxisRw)
+ self.appendLineBoolean(" column", self.sxaxisCol)
+ self.appendLineBoolean(" page", self.sxaxisPage)
+ self.appendLineBoolean(" data", self.sxaxisData)
+ self.appendLineInt("subtotal count", self.cSub)
+ self.appendLineBoolean(" default", self.fDefault)
+ self.appendLineBoolean(" sum", self.fSum)
+ self.appendLineBoolean(" counta", self.fCounta)
+ self.appendLineBoolean(" average", self.fAverage)
+ self.appendLineBoolean(" max", self.fMax)
+ self.appendLineBoolean(" min", self.fMin)
+ self.appendLineBoolean(" product", self.fProduct)
+ self.appendLineBoolean(" count", self.fCount)
+ self.appendLineBoolean(" stdev", self.fStdev)
+ self.appendLineBoolean(" stdevp", self.fStdevp)
+ self.appendLineBoolean(" variance", self.fVariance)
+ self.appendLineBoolean(" variancep", self.fVariancep)
+ self.appendLineInt("number of pivot items", self.cItm)
+ self.appendLineString("caption", self.stName)
class SXViewFieldsEx(BaseRecordHandler):
diff --git a/src/xlsstream.py b/src/xlsstream.py
index c6c230f..c8664c2 100644
--- a/src/xlsstream.py
+++ b/src/xlsstream.py
@@ -121,7 +121,7 @@ recData = {
0x00AE: ["SCENMAN", "Scenario Output Data"],
0x00AF: ["SCENARIO", "Scenario Data"],
0x00B0: ["SXVIEW", "View Definition", xlsrecord.SXView],
- 0x00B1: ["SXVD", "View Fields", xlsrecord.SXViewFields],
+ 0x00B1: ["SXVD", "View Fields", xlsrecord.Sxvd],
0x00B2: ["SXVI", "View Item", xlsrecord.SXVI],
0x00B4: ["SXIVD", "Row/Column Field IDs", xlsrecord.SxIvd],
0x00B5: ["SXLI", "Line Item Array", xlsrecord.SXLI],
More information about the Libreoffice-commits
mailing list