Ver código fonte

sync test case

TonyKang 8 anos atrás
pai
commit
c6a8478a27

+ 281 - 0
modules/reports/util/excel_base_files/theme1.xml

@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office 主题">
+	<a:themeElements>
+		<a:clrScheme name="Office">
+			<a:dk1>
+				<a:sysClr val="windowText" lastClr="000000"/>
+			</a:dk1>
+			<a:lt1>
+				<a:sysClr val="window" lastClr="FFFFFF"/>
+			</a:lt1>
+			<a:dk2>
+				<a:srgbClr val="1F497D"/>
+			</a:dk2>
+			<a:lt2>
+				<a:srgbClr val="EEECE1"/>
+			</a:lt2>
+			<a:accent1>
+				<a:srgbClr val="4F81BD"/>
+			</a:accent1>
+			<a:accent2>
+				<a:srgbClr val="C0504D"/>
+			</a:accent2>
+			<a:accent3>
+				<a:srgbClr val="9BBB59"/>
+			</a:accent3>
+			<a:accent4>
+				<a:srgbClr val="8064A2"/>
+			</a:accent4>
+			<a:accent5>
+				<a:srgbClr val="4BACC6"/>
+			</a:accent5>
+			<a:accent6>
+				<a:srgbClr val="F79646"/>
+			</a:accent6>
+			<a:hlink>
+				<a:srgbClr val="0000FF"/>
+			</a:hlink>
+			<a:folHlink>
+				<a:srgbClr val="800080"/>
+			</a:folHlink>
+		</a:clrScheme>
+		<a:fontScheme name="Office">
+			<a:majorFont>
+				<a:latin typeface="Cambria"/>
+				<a:ea typeface=""/>
+				<a:cs typeface=""/>
+				<a:font script="Jpan" typeface="MS Pゴシック"/>
+				<a:font script="Hang" typeface="맑은 고딕"/>
+				<a:font script="Hans" typeface="宋体"/>
+				<a:font script="Hant" typeface="新細明體"/>
+				<a:font script="Arab" typeface="Times New Roman"/>
+				<a:font script="Hebr" typeface="Times New Roman"/>
+				<a:font script="Thai" typeface="Tahoma"/>
+				<a:font script="Ethi" typeface="Nyala"/>
+				<a:font script="Beng" typeface="Vrinda"/>
+				<a:font script="Gujr" typeface="Shruti"/>
+				<a:font script="Khmr" typeface="MoolBoran"/>
+				<a:font script="Knda" typeface="Tunga"/>
+				<a:font script="Guru" typeface="Raavi"/>
+				<a:font script="Cans" typeface="Euphemia"/>
+				<a:font script="Cher" typeface="Plantagenet Cherokee"/>
+				<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+				<a:font script="Tibt" typeface="Microsoft Himalaya"/>
+				<a:font script="Thaa" typeface="MV Boli"/>
+				<a:font script="Deva" typeface="Mangal"/>
+				<a:font script="Telu" typeface="Gautami"/>
+				<a:font script="Taml" typeface="Latha"/>
+				<a:font script="Syrc" typeface="Estrangelo Edessa"/>
+				<a:font script="Orya" typeface="Kalinga"/>
+				<a:font script="Mlym" typeface="Kartika"/>
+				<a:font script="Laoo" typeface="DokChampa"/>
+				<a:font script="Sinh" typeface="Iskoola Pota"/>
+				<a:font script="Mong" typeface="Mongolian Baiti"/>
+				<a:font script="Viet" typeface="Times New Roman"/>
+				<a:font script="Uigh" typeface="Microsoft Uighur"/>
+			</a:majorFont>
+			<a:minorFont>
+				<a:latin typeface="Calibri"/>
+				<a:ea typeface=""/>
+				<a:cs typeface=""/>
+				<a:font script="Jpan" typeface="MS Pゴシック"/>
+				<a:font script="Hang" typeface="맑은 고딕"/>
+				<a:font script="Hans" typeface="宋体"/>
+				<a:font script="Hant" typeface="新細明體"/>
+				<a:font script="Arab" typeface="Arial"/>
+				<a:font script="Hebr" typeface="Arial"/>
+				<a:font script="Thai" typeface="Tahoma"/>
+				<a:font script="Ethi" typeface="Nyala"/>
+				<a:font script="Beng" typeface="Vrinda"/>
+				<a:font script="Gujr" typeface="Shruti"/>
+				<a:font script="Khmr" typeface="DaunPenh"/>
+				<a:font script="Knda" typeface="Tunga"/>
+				<a:font script="Guru" typeface="Raavi"/>
+				<a:font script="Cans" typeface="Euphemia"/>
+				<a:font script="Cher" typeface="Plantagenet Cherokee"/>
+				<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+				<a:font script="Tibt" typeface="Microsoft Himalaya"/>
+				<a:font script="Thaa" typeface="MV Boli"/>
+				<a:font script="Deva" typeface="Mangal"/>
+				<a:font script="Telu" typeface="Gautami"/>
+				<a:font script="Taml" typeface="Latha"/>
+				<a:font script="Syrc" typeface="Estrangelo Edessa"/>
+				<a:font script="Orya" typeface="Kalinga"/>
+				<a:font script="Mlym" typeface="Kartika"/>
+				<a:font script="Laoo" typeface="DokChampa"/>
+				<a:font script="Sinh" typeface="Iskoola Pota"/>
+				<a:font script="Mong" typeface="Mongolian Baiti"/>
+				<a:font script="Viet" typeface="Arial"/>
+				<a:font script="Uigh" typeface="Microsoft Uighur"/>
+			</a:minorFont>
+		</a:fontScheme>
+		<a:fmtScheme name="Office">
+			<a:fillStyleLst>
+				<a:solidFill>
+					<a:schemeClr val="phClr"/>
+				</a:solidFill>
+				<a:gradFill rotWithShape="1">
+					<a:gsLst>
+						<a:gs pos="0">
+							<a:schemeClr val="phClr">
+								<a:tint val="50000"/>
+								<a:satMod val="300000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="35000">
+							<a:schemeClr val="phClr">
+								<a:tint val="37000"/>
+								<a:satMod val="300000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="100000">
+							<a:schemeClr val="phClr">
+								<a:tint val="15000"/>
+								<a:satMod val="350000"/>
+							</a:schemeClr>
+						</a:gs>
+					</a:gsLst>
+					<a:lin ang="16200000" scaled="1"/>
+				</a:gradFill>
+				<a:gradFill rotWithShape="1">
+					<a:gsLst>
+						<a:gs pos="0">
+							<a:schemeClr val="phClr">
+								<a:shade val="51000"/>
+								<a:satMod val="130000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="80000">
+							<a:schemeClr val="phClr">
+								<a:shade val="93000"/>
+								<a:satMod val="130000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="100000">
+							<a:schemeClr val="phClr">
+								<a:shade val="94000"/>
+								<a:satMod val="135000"/>
+							</a:schemeClr>
+						</a:gs>
+					</a:gsLst>
+					<a:lin ang="16200000" scaled="0"/>
+				</a:gradFill>
+			</a:fillStyleLst>
+			<a:lnStyleLst>
+				<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
+					<a:solidFill>
+						<a:schemeClr val="phClr">
+							<a:shade val="95000"/>
+							<a:satMod val="105000"/>
+						</a:schemeClr>
+					</a:solidFill>
+					<a:prstDash val="solid"/>
+				</a:ln>
+				<a:ln w="25400" cap="flat" cmpd="sng" algn="ctr">
+					<a:solidFill>
+						<a:schemeClr val="phClr"/>
+					</a:solidFill>
+					<a:prstDash val="solid"/>
+				</a:ln>
+				<a:ln w="38100" cap="flat" cmpd="sng" algn="ctr">
+					<a:solidFill>
+						<a:schemeClr val="phClr"/>
+					</a:solidFill>
+					<a:prstDash val="solid"/>
+				</a:ln>
+			</a:lnStyleLst>
+			<a:effectStyleLst>
+				<a:effectStyle>
+					<a:effectLst>
+						<a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0">
+							<a:srgbClr val="000000">
+								<a:alpha val="38000"/>
+							</a:srgbClr>
+						</a:outerShdw>
+					</a:effectLst>
+				</a:effectStyle>
+				<a:effectStyle>
+					<a:effectLst>
+						<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+							<a:srgbClr val="000000">
+								<a:alpha val="35000"/>
+							</a:srgbClr>
+						</a:outerShdw>
+					</a:effectLst>
+				</a:effectStyle>
+				<a:effectStyle>
+					<a:effectLst>
+						<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+							<a:srgbClr val="000000">
+								<a:alpha val="35000"/>
+							</a:srgbClr>
+						</a:outerShdw>
+					</a:effectLst>
+					<a:scene3d>
+						<a:camera prst="orthographicFront">
+							<a:rot lat="0" lon="0" rev="0"/>
+						</a:camera>
+						<a:lightRig rig="threePt" dir="t">
+							<a:rot lat="0" lon="0" rev="1200000"/>
+						</a:lightRig>
+					</a:scene3d>
+					<a:sp3d>
+						<a:bevelT w="63500" h="25400"/>
+					</a:sp3d>
+				</a:effectStyle>
+			</a:effectStyleLst>
+			<a:bgFillStyleLst>
+				<a:solidFill>
+					<a:schemeClr val="phClr"/>
+				</a:solidFill>
+				<a:gradFill rotWithShape="1">
+					<a:gsLst>
+						<a:gs pos="0">
+							<a:schemeClr val="phClr">
+								<a:tint val="40000"/>
+								<a:satMod val="350000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="40000">
+							<a:schemeClr val="phClr">
+								<a:tint val="45000"/>
+								<a:shade val="99000"/>
+								<a:satMod val="350000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="100000">
+							<a:schemeClr val="phClr">
+								<a:shade val="20000"/>
+								<a:satMod val="255000"/>
+							</a:schemeClr>
+						</a:gs>
+					</a:gsLst>
+					<a:path path="circle">
+						<a:fillToRect l="50000" t="-80000" r="50000" b="180000"/>
+					</a:path>
+				</a:gradFill>
+				<a:gradFill rotWithShape="1">
+					<a:gsLst>
+						<a:gs pos="0">
+							<a:schemeClr val="phClr">
+								<a:tint val="80000"/>
+								<a:satMod val="300000"/>
+							</a:schemeClr>
+						</a:gs>
+						<a:gs pos="100000">
+							<a:schemeClr val="phClr">
+								<a:shade val="30000"/>
+								<a:satMod val="200000"/>
+							</a:schemeClr>
+						</a:gs>
+					</a:gsLst>
+					<a:path path="circle">
+						<a:fillToRect l="50000" t="50000" r="50000" b="50000"/>
+					</a:path>
+				</a:gradFill>
+			</a:bgFillStyleLst>
+		</a:fmtScheme>
+	</a:themeElements>
+	<a:objectDefaults/>
+	<a:extraClrSchemeLst/>
+</a:theme>

+ 160 - 41
modules/reports/util/rpt_excel_util.js

@@ -2,71 +2,190 @@
  * Created by Tony on 2017/4/1.
  */
 var JV = require('../rpt_component/Jpc_ValueDefine');
-
+var fs = require('fs');
 const dftHeadXml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
 
 function writeContentTypes(sheets) {
     var rst = [];
-    rst.push[dftHeadXml + '\r\n'];
-    rst.push['<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">'];
+    rst.push(dftHeadXml + '\r\n');
+    rst.push('<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">');
     //...
-    rst.push['<Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>'];
-    rst.push['<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>'];
-    rst.push['<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>'];
-    rst.push['<Default Extension="xml" ContentType="application/xml"/>'];
-    rst.push['<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>'];
-    rst.push['<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>'];
-    rst.push['<Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>'];
+    rst.push('<Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>');
+    rst.push('<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>');
+    rst.push('<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>');
+    rst.push('<Default Extension="xml" ContentType="application/xml"/>');
+    rst.push('<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>');
+    rst.push('<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>');
+    rst.push('<Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>');
     for (var i = 0; i < sheets.length; i++) {
         rst.push('<Override PartName="/xl/worksheets/' + sheets[i].sheetName + '.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>')
     }
-    rst.push['<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>'];
-    rst.push['</Types>'];
+    rst.push('<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>');
+    rst.push('</Types>');
     return rst;
 }
 function writeRootRels(){
     var rst = [];
-    rst.push[dftHeadXml + '\r\n'];
-    rst.push['<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">'];
-    rst.push['<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>'];
-    rst.push['<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>'];
-    rst.push['<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>'];
-    //rst.push['']; ...
-    rst.push['</Relationships>'];
+    rst.push(dftHeadXml + '\r\n');
+    rst.push('<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">');
+    rst.push('<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>');
+    rst.push('<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>');
+    rst.push('<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>');
+    rst.push('</Relationships>');
     return rst;
 }
 function writeApp(sheets) {
     var rst = [];
-    rst.push[dftHeadXml + '\r\n'];
-    rst.push['<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">'];
-    rst.push['<Application>Microsoft Excel</Application>'];
-    rst.push['<DocSecurity>0</DocSecurity>'];
-    rst.push['<ScaleCrop>false</ScaleCrop>'];
-    rst.push['<HeadingPairs>'];
-    rst.push['<vt:vector size="2" baseType="variant">'];
-    rst.push['<vt:variant><vt:lpstr>¹¤×÷±í</vt:lpstr></vt:variant>'];
-    rst.push['<vt:variant><vt:i4>' + sheets.length + '</vt:i4></vt:variant>'];
-    rst.push['</vt:vector>'];
-    rst.push['</HeadingPairs>'];
-    rst.push['<TitlesOfParts>'];
-    rst.push['<vt:vector size="' + sheets.length + '" baseType="lpstr">'];
+    rst.push(dftHeadXml + '\r\n');
+    rst.push('<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">');
+    rst.push('<Application>Microsoft Excel</Application>');
+    rst.push('<DocSecurity>0</DocSecurity>');
+    rst.push('<ScaleCrop>false</ScaleCrop>');
+    rst.push('<HeadingPairs>');
+    rst.push('<vt:vector size="2" baseType="variant">');
+    rst.push('<vt:variant><vt:lpstr>¹¤×÷±í</vt:lpstr></vt:variant>');
+    rst.push('<vt:variant><vt:i4>' + sheets.length + '</vt:i4></vt:variant>');
+    rst.push('</vt:vector>');
+    rst.push('</HeadingPairs>');
+    rst.push('<TitlesOfParts>');
+    rst.push('<vt:vector size="' + sheets.length + '" baseType="lpstr">');
     for (var i = 0; i < sheets.length; i++) {
         rst.push('<vt:lpstr>' + sheets[i].sheetName + '</vt:lpstr>')
     }
-    rst.push['</vt:vector>'];
-    rst.push['</TitlesOfParts>'];
-    rst.push['<Company>SmartCost</Company>'];
-    rst.push['<LinksUpToDate>false</LinksUpToDate>'];
-    rst.push['<SharedDoc>false</SharedDoc>'];
-    rst.push['<HyperlinksChanged>false</HyperlinksChanged>'];
-    rst.push['<AppVersion>12.0000</AppVersion>'];
-    //rst.push[''];
-    rst.push['</Properties>'];
+    rst.push('</vt:vector>');
+    rst.push('</TitlesOfParts>');
+    rst.push('<Company>SmartCost</Company>');
+    rst.push('<LinksUpToDate>false</LinksUpToDate>');
+    rst.push('<SharedDoc>false</SharedDoc>');
+    rst.push('<HyperlinksChanged>false</HyperlinksChanged>');
+    rst.push('<AppVersion>12.0000</AppVersion>');
+    //rst.push('');
+    rst.push('</Properties>');
     return rst;
 }
 function writeCore() {
+    var rst = [];
+    p_fillZero = function(val){
+        var rst = val;
+        if (val < 10) {
+            rst = '0' + val;
+        }
+        return rst;
+    };
+    rst.push(dftHeadXml + '\r\n');
+    rst.push('<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">');
+    rst.push('<dc:creator>SmartCost</dc:creator>');
+    rst.push('<cp:lastModifiedBy>SmartCost</cp:lastModifiedBy>');
+    var dt = new Date(), dtStr = dt.getFullYear() + '-' + p_fillZero(dt.getMonth()) + '-' + p_fillZero(dt.getDate()) + 'T' +
+        p_fillZero(dt.getHours()) + ':' + p_fillZero(dt.getMinutes()) + ':' + p_fillZero(dt.getSeconds()) + 'Z';
+    rst.push('<dcterms:created xsi:type="dcterms:W3CDTF">' + dtStr + '</dcterms:created>');
+    rst.push('<dcterms:modified xsi:type="dcterms:W3CDTF">' + dtStr + '</dcterms:modified>');
+    //rst.push('');
+    rst.push('</cp:coreProperties>');
+    return rst;
+}
+function writeXlWorkBook(sheets){
+    var rst = [];
+    rst.push(dftHeadXml + '\r\n');
+    rst.push('<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">');
+    rst.push('<fileVersion appName="xl" lastEdited="4" lowestEdited="4" rupBuild="4505"/>');
+    rst.push('<workbookPr defaultThemeVersion="124226"/>');
+    rst.push('<bookViews><workbookView xWindow="360" yWindow="345" windowWidth="14655" windowHeight="4305"/></bookViews>');
+    rst.push('<sheets>');
+    for (var i = 0; i < sheets.length; i++) {
+        rst.push('<sheet name="' + sheets[i].sheetName + '" sheetId="' + (i + 1) + 'r:id="rId' + (i + 1) + '1"/>')
+    }
+    rst.push('</sheets>');
+    rst.push('<calcPr calcId="124519"/>');
+    //rst.push('');
+    rst.push('</workbook>');
+    return rst;
+}
+function writeXlRels(sheets){
+    var rst = [], idx = 1;
+    rst.push(dftHeadXml + '\r\n');
+    rst.push('<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">');
+    for (var i = 0; i < sheets.length; i++) {
+        rst.push('<Relationship Id="rId' + idx + '" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/' + sheets[i].sheetName + '.xml/>"')
+        idx++;
+    }
+    rst.push('<Relationship Id="rId' + idx + '" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>');
+    idx++;
+    rst.push('<Relationship Id="rId' + idx + '" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>');
+    idx++;
+    rst.push('<Relationship Id="rId' + idx + '" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml"/>');
+    //rst.push('');
+    rst.push('</Relationships>');
+    return rst;
+}
+function writeTheme(){
+    var rst = fs.readFileSync('./excel_base_files/theme1.xml', 'utf8', 'r');
+    return rst;
+}
+function writeStyles(pageData){
+    //
+}
+function writeSharedString(pageData){
     //
 }
+function writeSheets(pageData){
+    var rst = [], sharedStrList = [];
+    for (var i = 0; i < pageData.items.length; i++) {
+        //
+    }
+}
+function writeSheet(sheetData, sharedStrList){
+    var rst = [], x = [0], y = [0], headerStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+    private_pre_analyze_pos = function(){
+        var cell, pos;
+        for (var i = 0; i < sheetData.cells.length; i++) {
+            cell = sheetData.cells[i];
+            pos = cell[JV.PROP_AREA][JV.PROP_LEFT];
+            if (x.indexOf(pos) < 0) x.push(pos);
+            pos = cell[JV.PROP_AREA][JV.PROP_RIGHT];
+            if (x.indexOf(pos) < 0) x.push(pos);
+            pos = cell[JV.PROP_AREA][JV.PROP_TOP];
+            if (y.indexOf(pos) < 0) y.push(pos);
+            pos = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
+            if (y.indexOf(pos) < 0) y.push(pos);
+        }
+        x.sort();
+        y.sort();
+    };
+    private_getCellIdxStr = function(idx){
+        var rst = 'A', prefix = '', tmpIdx = idx;
+        if (tmpIdx > 26) {
+            var ti = Math.floor(tmpIdx / 26), tj = tmpIdx % 26;
+            if (ti < 26) {
+                //
+            } else {
+                prefix = ''
+            }
+        } else {
+            //
+        }
+        //if (idx < )
+    };
+    private_getStrIdx = function(val) {
+        //
+    };
+    private_pre_analyze_pos();
+    rst.push(dftHeadXml + '\r\n');
+    rst.push('<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">');
+    rst.push('<dimension ref="A1:U4332"/>');
+    rst.push('');
+    rst.push('');
+    rst.push('');
+    rst.push('');
+    rst.push('');
+    rst.push('');
+    rst.push('');
+    rst.push('');
+    rst.push('');
+    rst.push('');
+    //rst.push('');
+    return rst;
+}
 
 module.exports = {
     exportExcel: function (pageData, options) {

+ 24 - 1
test/demo/demo.js

@@ -11,4 +11,27 @@ test('basic arithmetic', function (t) {
     //t.equal(isNaN(10.1), true);
     t.equal(Math.round(10.4999), 10);
     t.end();
-});
+});
+
+test('', function(t){
+    var dt = new Date();
+    p_fillZero = function(val){
+        var rst = val;
+        if (val < 10) {
+            rst = '0' + val;
+        }
+        return rst;
+    };
+    console.log(dt.getFullYear() + '-' + p_fillZero(dt.getMonth()) + '-' + p_fillZero(dt.getDate()) + 'T' +
+        p_fillZero(dt.getHours()) + ':' + p_fillZero(dt.getMinutes()) + ':' + p_fillZero(dt.getSeconds()) + 'Z');
+    t.pass('just pass');
+    t.end();
+})
+
+test('default sorting...', function(t){
+    var arrSimple=new Array(1,8,7,6);
+    arrSimple.sort();
+    console.log(arrSimple);
+    t.pass('just pass');
+    t.end();
+})

+ 34 - 0
test/unit/excel_export/privateFunctionTest.js

@@ -0,0 +1,34 @@
+/**
+ * Created by Tony on 2017/4/5.
+ */
+
+var test = require('tape');
+var headerStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+
+test('test private 1', function(t){
+    private_getCellIdxStr = function(idx, pre){
+        var rst = 'A', prefix = '', tmpIdx = idx;
+        if (tmpIdx >= 26) {
+            var ti = Math.floor(tmpIdx / 26), tj = tmpIdx % 26;
+            if (ti <= 26) {
+                rst = pre + headerStr[ti - 1] + headerStr[tj];
+            } else {
+                rst = private_getCellIdxStr(ti, 'A' + pre) + headerStr[tj];
+            }
+        } else {
+            rst = pre + headerStr[tmpIdx % 26];
+        }
+        return rst;
+    };
+    //t.equal(private_getCellIdxStr(0, ''), 'A');
+    //t.equal(private_getCellIdxStr(25, ''), 'Z');
+    //t.equal(private_getCellIdxStr(26, ''), 'AA');
+    //t.equal(private_getCellIdxStr(27, ''), 'AB');
+    //t.equal(private_getCellIdxStr(51, ''), 'AZ');
+    //t.equal(private_getCellIdxStr(52, ''), 'BA');
+    //t.equal(private_getCellIdxStr(675, ''), 'YZ');
+    //t.equal(private_getCellIdxStr(676, ''), 'ZA');
+    //t.equal(private_getCellIdxStr(701, ''), 'ZZ');
+    t.equal(private_getCellIdxStr(702, ''), 'AAA');
+    t.end();
+})

Diferenças do arquivo suprimidas por serem muito extensas
+ 18061 - 0
tmp/07_1.page.js


+ 14 - 0
tmp/excel_test_raw_data/08-2/[Content_Types].xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
+	<Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
+	<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>
+	<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
+	<Default Extension="xml" ContentType="application/xml"/>
+	<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
+	<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
+	<Override PartName="/xl/worksheets/sheet2.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
+	<Override PartName="/xl/worksheets/sheet3.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
+	<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
+	<Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>
+	<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
+</Types>

+ 6 - 0
tmp/excel_test_raw_data/08-2/_rels/.rels

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+	<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>
+	<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
+	<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>
+</Relationships>

+ 26 - 0
tmp/excel_test_raw_data/08-2/docProps/app.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
+	<Application>Microsoft Excel</Application>
+	<DocSecurity>0</DocSecurity>
+	<ScaleCrop>false</ScaleCrop>
+	<HeadingPairs>
+		<vt:vector size="2" baseType="variant">
+			<vt:variant>
+				<vt:lpstr>工作表</vt:lpstr>
+			</vt:variant>
+			<vt:variant>
+				<vt:i4>1</vt:i4>
+			</vt:variant>
+		</vt:vector>
+	</HeadingPairs>
+	<TitlesOfParts>
+		<vt:vector size="1" baseType="lpstr">
+			<vt:lpstr>第1页</vt:lpstr>
+		</vt:vector>
+	</TitlesOfParts>
+	<Company>OOCL</Company>
+	<LinksUpToDate>false</LinksUpToDate>
+	<SharedDoc>false</SharedDoc>
+	<HyperlinksChanged>false</HyperlinksChanged>
+	<AppVersion>12.0000</AppVersion>
+</Properties>

+ 7 - 0
tmp/excel_test_raw_data/08-2/docProps/core.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<dc:creator>Tony</dc:creator>
+	<cp:lastModifiedBy>Tony</cp:lastModifiedBy>
+	<dcterms:created xsi:type="dcterms:W3CDTF">2011-05-14T09:11:44Z</dcterms:created>
+	<dcterms:modified xsi:type="dcterms:W3CDTF">2017-03-31T02:23:46Z</dcterms:modified>
+</cp:coreProperties>

+ 7 - 0
tmp/excel_test_raw_data/08-2/xl/_rels/workbook.xml.rels

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+    <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml" />
+    <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml" />
+    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml" />
+    <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml" />
+</Relationships>

Diferenças do arquivo suprimidas por serem muito extensas
+ 17365 - 0
tmp/excel_test_raw_data/08-2/xl/sharedStrings.xml


+ 207 - 0
tmp/excel_test_raw_data/08-2/xl/styles.xml

@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
+	<fonts count="6">
+		<font>
+			<sz val="11"/>
+			<color theme="1"/>
+			<name val="宋体"/>
+			<charset val="134"/>
+			<scheme val="minor"/>
+		</font>
+		<font>
+			<sz val="9"/>
+			<name val="宋体"/>
+			<charset val="134"/>
+		</font>
+		<font>
+			<b/>
+			<sz val="20"/>
+			<color indexed="8"/>
+			<name val="smartSimSun"/>
+			<charset val="134"/>
+		</font>
+		<font>
+			<sz val="9"/>
+			<color indexed="8"/>
+			<name val="smartSimSun"/>
+			<charset val="134"/>
+		</font>
+		<font>
+			<sz val="9"/>
+			<color indexed="8"/>
+			<name val="宋体"/>
+			<charset val="134"/>
+		</font>
+		<font>
+			<sz val="12"/>
+			<color indexed="8"/>
+			<name val="宋体"/>
+			<charset val="134"/>
+		</font>
+	</fonts>
+	<fills count="2">
+		<fill>
+			<patternFill patternType="none"/>
+		</fill>
+		<fill>
+			<patternFill patternType="gray125"/>
+		</fill>
+	</fills>
+	<borders count="6">
+		<border>
+			<left/>
+			<right/>
+			<top/>
+			<bottom/>
+			<diagonal/>
+		</border>
+		<border>
+			<left/>
+			<right style="thin">
+				<color indexed="8"/>
+			</right>
+			<top style="thin">
+				<color indexed="8"/>
+			</top>
+			<bottom style="thin">
+				<color indexed="8"/>
+			</bottom>
+			<diagonal/>
+		</border>
+		<border>
+			<left style="thin">
+				<color indexed="8"/>
+			</left>
+			<right style="thin">
+				<color indexed="8"/>
+			</right>
+			<top style="thin">
+				<color indexed="8"/>
+			</top>
+			<bottom style="thin">
+				<color indexed="8"/>
+			</bottom>
+			<diagonal/>
+		</border>
+		<border>
+			<left style="thin">
+				<color indexed="8"/>
+			</left>
+			<right/>
+			<top style="thin">
+				<color indexed="8"/>
+			</top>
+			<bottom style="thin">
+				<color indexed="8"/>
+			</bottom>
+			<diagonal/>
+		</border>
+		<border>
+			<left style="thin">
+				<color indexed="8"/>
+			</left>
+			<right/>
+			<top style="thin">
+				<color indexed="8"/>
+			</top>
+			<bottom/>
+			<diagonal/>
+		</border>
+		<border>
+			<left style="thin">
+				<color indexed="8"/>
+			</left>
+			<right/>
+			<top/>
+			<bottom/>
+			<diagonal/>
+		</border>
+	</borders>
+	<cellStyleXfs count="1">
+		<xf numFmtId="0" fontId="0" fillId="0" borderId="0">
+			<alignment vertical="center"/>
+		</xf>
+	</cellStyleXfs>
+	<cellXfs count="19">
+		<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0">
+			<alignment vertical="center"/>
+		</xf>
+		<xf numFmtId="0" fontId="2" fillId="0" borderId="0" xfId="0" applyFont="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="center" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="0" xfId="0" applyFont="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="left" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="1" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="center" vertical="center" wrapText="1" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="2" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="center" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="2" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="left" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="2" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="2" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="right" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="3" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="center" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="4" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="center" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="5" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="center" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="1" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="3" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="right" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="4" fillId="0" borderId="0" xfId="0" applyFont="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="left" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="1" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="center" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="5" fillId="0" borderId="2" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="center" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="5" fillId="0" borderId="3" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="center" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="2" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="right" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+		<xf numFmtId="0" fontId="3" fillId="0" borderId="3" xfId="0" applyFont="1" applyBorder="1" applyAlignment="1" applyProtection="1">
+			<alignment horizontal="right" vertical="center" shrinkToFit="1"/>
+			<protection locked="0"/>
+		</xf>
+	</cellXfs>
+	<cellStyles count="1">
+		<cellStyle name="常规" xfId="0" builtinId="0"/>
+	</cellStyles>
+	<dxfs count="0"/>
+	<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleLight16"/>
+</styleSheet>

+ 281 - 0
tmp/excel_test_raw_data/08-2/xl/theme/theme1.xml

@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office 主题">
+    <a:themeElements>
+        <a:clrScheme name="Office">
+            <a:dk1>
+                <a:sysClr val="windowText" lastClr="000000" />
+            </a:dk1>
+            <a:lt1>
+                <a:sysClr val="window" lastClr="FFFFFF" />
+            </a:lt1>
+            <a:dk2>
+                <a:srgbClr val="1F497D" />
+            </a:dk2>
+            <a:lt2>
+                <a:srgbClr val="EEECE1" />
+            </a:lt2>
+            <a:accent1>
+                <a:srgbClr val="4F81BD" />
+            </a:accent1>
+            <a:accent2>
+                <a:srgbClr val="C0504D" />
+            </a:accent2>
+            <a:accent3>
+                <a:srgbClr val="9BBB59" />
+            </a:accent3>
+            <a:accent4>
+                <a:srgbClr val="8064A2" />
+            </a:accent4>
+            <a:accent5>
+                <a:srgbClr val="4BACC6" />
+            </a:accent5>
+            <a:accent6>
+                <a:srgbClr val="F79646" />
+            </a:accent6>
+            <a:hlink>
+                <a:srgbClr val="0000FF" />
+            </a:hlink>
+            <a:folHlink>
+                <a:srgbClr val="800080" />
+            </a:folHlink>
+        </a:clrScheme>
+        <a:fontScheme name="Office">
+            <a:majorFont>
+                <a:latin typeface="Cambria" />
+                <a:ea typeface="" />
+                <a:cs typeface="" />
+                <a:font script="Jpan" typeface="MS Pゴシック" />
+                <a:font script="Hang" typeface="맑은 고딕" />
+                <a:font script="Hans" typeface="宋体" />
+                <a:font script="Hant" typeface="新細明體" />
+                <a:font script="Arab" typeface="Times New Roman" />
+                <a:font script="Hebr" typeface="Times New Roman" />
+                <a:font script="Thai" typeface="Tahoma" />
+                <a:font script="Ethi" typeface="Nyala" />
+                <a:font script="Beng" typeface="Vrinda" />
+                <a:font script="Gujr" typeface="Shruti" />
+                <a:font script="Khmr" typeface="MoolBoran" />
+                <a:font script="Knda" typeface="Tunga" />
+                <a:font script="Guru" typeface="Raavi" />
+                <a:font script="Cans" typeface="Euphemia" />
+                <a:font script="Cher" typeface="Plantagenet Cherokee" />
+                <a:font script="Yiii" typeface="Microsoft Yi Baiti" />
+                <a:font script="Tibt" typeface="Microsoft Himalaya" />
+                <a:font script="Thaa" typeface="MV Boli" />
+                <a:font script="Deva" typeface="Mangal" />
+                <a:font script="Telu" typeface="Gautami" />
+                <a:font script="Taml" typeface="Latha" />
+                <a:font script="Syrc" typeface="Estrangelo Edessa" />
+                <a:font script="Orya" typeface="Kalinga" />
+                <a:font script="Mlym" typeface="Kartika" />
+                <a:font script="Laoo" typeface="DokChampa" />
+                <a:font script="Sinh" typeface="Iskoola Pota" />
+                <a:font script="Mong" typeface="Mongolian Baiti" />
+                <a:font script="Viet" typeface="Times New Roman" />
+                <a:font script="Uigh" typeface="Microsoft Uighur" />
+            </a:majorFont>
+            <a:minorFont>
+                <a:latin typeface="Calibri" />
+                <a:ea typeface="" />
+                <a:cs typeface="" />
+                <a:font script="Jpan" typeface="MS Pゴシック" />
+                <a:font script="Hang" typeface="맑은 고딕" />
+                <a:font script="Hans" typeface="宋体" />
+                <a:font script="Hant" typeface="新細明體" />
+                <a:font script="Arab" typeface="Arial" />
+                <a:font script="Hebr" typeface="Arial" />
+                <a:font script="Thai" typeface="Tahoma" />
+                <a:font script="Ethi" typeface="Nyala" />
+                <a:font script="Beng" typeface="Vrinda" />
+                <a:font script="Gujr" typeface="Shruti" />
+                <a:font script="Khmr" typeface="DaunPenh" />
+                <a:font script="Knda" typeface="Tunga" />
+                <a:font script="Guru" typeface="Raavi" />
+                <a:font script="Cans" typeface="Euphemia" />
+                <a:font script="Cher" typeface="Plantagenet Cherokee" />
+                <a:font script="Yiii" typeface="Microsoft Yi Baiti" />
+                <a:font script="Tibt" typeface="Microsoft Himalaya" />
+                <a:font script="Thaa" typeface="MV Boli" />
+                <a:font script="Deva" typeface="Mangal" />
+                <a:font script="Telu" typeface="Gautami" />
+                <a:font script="Taml" typeface="Latha" />
+                <a:font script="Syrc" typeface="Estrangelo Edessa" />
+                <a:font script="Orya" typeface="Kalinga" />
+                <a:font script="Mlym" typeface="Kartika" />
+                <a:font script="Laoo" typeface="DokChampa" />
+                <a:font script="Sinh" typeface="Iskoola Pota" />
+                <a:font script="Mong" typeface="Mongolian Baiti" />
+                <a:font script="Viet" typeface="Arial" />
+                <a:font script="Uigh" typeface="Microsoft Uighur" />
+            </a:minorFont>
+        </a:fontScheme>
+        <a:fmtScheme name="Office">
+            <a:fillStyleLst>
+                <a:solidFill>
+                    <a:schemeClr val="phClr" />
+                </a:solidFill>
+                <a:gradFill rotWithShape="1">
+                    <a:gsLst>
+                        <a:gs pos="0">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="50000" />
+                                <a:satMod val="300000" />
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="35000">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="37000" />
+                                <a:satMod val="300000" />
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="100000">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="15000" />
+                                <a:satMod val="350000" />
+                            </a:schemeClr>
+                        </a:gs>
+                    </a:gsLst>
+                    <a:lin ang="16200000" scaled="1" />
+                </a:gradFill>
+                <a:gradFill rotWithShape="1">
+                    <a:gsLst>
+                        <a:gs pos="0">
+                            <a:schemeClr val="phClr">
+                                <a:shade val="51000" />
+                                <a:satMod val="130000" />
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="80000">
+                            <a:schemeClr val="phClr">
+                                <a:shade val="93000" />
+                                <a:satMod val="130000" />
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="100000">
+                            <a:schemeClr val="phClr">
+                                <a:shade val="94000" />
+                                <a:satMod val="135000" />
+                            </a:schemeClr>
+                        </a:gs>
+                    </a:gsLst>
+                    <a:lin ang="16200000" scaled="0" />
+                </a:gradFill>
+            </a:fillStyleLst>
+            <a:lnStyleLst>
+                <a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
+                    <a:solidFill>
+                        <a:schemeClr val="phClr">
+                            <a:shade val="95000" />
+                            <a:satMod val="105000" />
+                        </a:schemeClr>
+                    </a:solidFill>
+                    <a:prstDash val="solid" />
+                </a:ln>
+                <a:ln w="25400" cap="flat" cmpd="sng" algn="ctr">
+                    <a:solidFill>
+                        <a:schemeClr val="phClr" />
+                    </a:solidFill>
+                    <a:prstDash val="solid" />
+                </a:ln>
+                <a:ln w="38100" cap="flat" cmpd="sng" algn="ctr">
+                    <a:solidFill>
+                        <a:schemeClr val="phClr" />
+                    </a:solidFill>
+                    <a:prstDash val="solid" />
+                </a:ln>
+            </a:lnStyleLst>
+            <a:effectStyleLst>
+                <a:effectStyle>
+                    <a:effectLst>
+                        <a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0">
+                            <a:srgbClr val="000000">
+                                <a:alpha val="38000" />
+                            </a:srgbClr>
+                        </a:outerShdw>
+                    </a:effectLst>
+                </a:effectStyle>
+                <a:effectStyle>
+                    <a:effectLst>
+                        <a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+                            <a:srgbClr val="000000">
+                                <a:alpha val="35000" />
+                            </a:srgbClr>
+                        </a:outerShdw>
+                    </a:effectLst>
+                </a:effectStyle>
+                <a:effectStyle>
+                    <a:effectLst>
+                        <a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">
+                            <a:srgbClr val="000000">
+                                <a:alpha val="35000" />
+                            </a:srgbClr>
+                        </a:outerShdw>
+                    </a:effectLst>
+                    <a:scene3d>
+                        <a:camera prst="orthographicFront">
+                            <a:rot lat="0" lon="0" rev="0" />
+                        </a:camera>
+                        <a:lightRig rig="threePt" dir="t">
+                            <a:rot lat="0" lon="0" rev="1200000" />
+                        </a:lightRig>
+                    </a:scene3d>
+                    <a:sp3d>
+                        <a:bevelT w="63500" h="25400" />
+                    </a:sp3d>
+                </a:effectStyle>
+            </a:effectStyleLst>
+            <a:bgFillStyleLst>
+                <a:solidFill>
+                    <a:schemeClr val="phClr" />
+                </a:solidFill>
+                <a:gradFill rotWithShape="1">
+                    <a:gsLst>
+                        <a:gs pos="0">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="40000" />
+                                <a:satMod val="350000" />
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="40000">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="45000" />
+                                <a:shade val="99000" />
+                                <a:satMod val="350000" />
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="100000">
+                            <a:schemeClr val="phClr">
+                                <a:shade val="20000" />
+                                <a:satMod val="255000" />
+                            </a:schemeClr>
+                        </a:gs>
+                    </a:gsLst>
+                    <a:path path="circle">
+                        <a:fillToRect l="50000" t="-80000" r="50000" b="180000" />
+                    </a:path>
+                </a:gradFill>
+                <a:gradFill rotWithShape="1">
+                    <a:gsLst>
+                        <a:gs pos="0">
+                            <a:schemeClr val="phClr">
+                                <a:tint val="80000" />
+                                <a:satMod val="300000" />
+                            </a:schemeClr>
+                        </a:gs>
+                        <a:gs pos="100000">
+                            <a:schemeClr val="phClr">
+                                <a:shade val="30000" />
+                                <a:satMod val="200000" />
+                            </a:schemeClr>
+                        </a:gs>
+                    </a:gsLst>
+                    <a:path path="circle">
+                        <a:fillToRect l="50000" t="50000" r="50000" b="50000" />
+                    </a:path>
+                </a:gradFill>
+            </a:bgFillStyleLst>
+        </a:fmtScheme>
+    </a:themeElements>
+    <a:objectDefaults />
+    <a:extraClrSchemeLst />
+</a:theme>

+ 12 - 0
tmp/excel_test_raw_data/08-2/xl/workbook.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
+	<fileVersion appName="xl" lastEdited="4" lowestEdited="4" rupBuild="4505"/>
+	<workbookPr defaultThemeVersion="124226"/>
+	<bookViews>
+		<workbookView xWindow="360" yWindow="345" windowWidth="14655" windowHeight="4305"/>
+	</bookViews>
+	<sheets>
+		<sheet name="第1页" sheetId="1" r:id="rId1"/>
+	</sheets>
+	<calcPr calcId="124519"/>
+</workbook>

Diferenças do arquivo suprimidas por serem muito extensas
+ 151683 - 0
tmp/excel_test_raw_data/08-2/xl/worksheets/sheet1.xml