| 
					
				 | 
			
			
				@@ -7,6 +7,7 @@ let JSZip = require("jszip"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let strUtil = require('../../../public/stringUtil'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let jpcCmnHelper = require('../rpt_component/helper/jpc_helper_common'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 let DPI = jpcCmnHelper.getScreenDPI()[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let fsUtil = require('../../../public/fsUtil'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const dftHeadXml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function writeContentTypes(sheets, isSinglePage) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -331,6 +332,7 @@ function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let rst = [], xPos = [], yPos = [], yMultiPos = [], headerStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let cacheBorderCell = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let currentPageMergePos = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let private_pre_analyze_pos = function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let cell, pos; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let self_analyze_sheet_pos = function (theShtData, theXPos, theYPos) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -446,22 +448,22 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         borderLineWidths.push(border[JV.PROP_TOP][JV.PROP_LINE_WEIGHT]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         borderLineWidths.push(border[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (sheetBorder[JV.PROP_LEFT] && sheetBorder[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            sheetBorderLineWidths.push(private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_LEFT)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sheetBorderLineWidths.push(private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_LEFT, true)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sheetBorderLineWidths.push(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (sheetBorder[JV.PROP_RIGHT] && sheetBorder[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            sheetBorderLineWidths.push(private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_RIGHT)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sheetBorderLineWidths.push(private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_RIGHT, true)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sheetBorderLineWidths.push(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (sheetBorder[JV.PROP_TOP] && sheetBorder[JV.PROP_TOP][JV.PROP_LINE_WEIGHT]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            sheetBorderLineWidths.push(private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_TOP)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sheetBorderLineWidths.push(private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_TOP, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sheetBorderLineWidths.push(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (sheetBorder[JV.PROP_BOTTOM] && sheetBorder[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            sheetBorderLineWidths.push(private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_BOTTOM)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sheetBorderLineWidths.push(private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_BOTTOM, false)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sheetBorderLineWidths.push(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -473,14 +475,45 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let private_chkAndGetMergeLine = function(cell, sheetBorder, borderStr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let private_chkAndGetMergeLine = function(cell, sheetBorder, borderStr, needFurtherChk) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rst = 0, mergeBorder = pageData[JV.BAND_PROP_MERGE_BAND]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (sheetBorder[borderStr] && sheetBorder[borderStr][JV.PROP_LINE_WEIGHT] != undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (sheetBorder[borderStr] && sheetBorder[borderStr][JV.PROP_LINE_WEIGHT] !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rst = sheetBorder[borderStr][JV.PROP_LINE_WEIGHT]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (cell[JV.PROP_AREA][borderStr] == mergeBorder[borderStr]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let destStyle = pageData[JV.NODE_STYLE_COLLECTION][mergeBorder[JV.PROP_STYLE][JV.PROP_ID]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rst = destStyle[borderStr][JV.PROP_LINE_WEIGHT]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (currentPageMergePos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let side = currentPageMergePos[borderStr]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (side.indexOf(cell[JV.PROP_AREA][borderStr]) >= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (needFurtherChk) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let topSide = currentPageMergePos[JV.PROP_TOP]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let bottomSide = currentPageMergePos[JV.PROP_BOTTOM]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (let i = 0; i < topSide.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (cell[JV.PROP_AREA][JV.PROP_TOP] >= topSide[i]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (cell[JV.PROP_AREA][JV.PROP_BOTTOM] <= bottomSide[i]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                let destStyle = pageData[JV.NODE_STYLE_COLLECTION][mergeBorder[JV.PROP_STYLE][JV.PROP_ID]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                rst = destStyle[borderStr][JV.PROP_LINE_WEIGHT]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let destStyle = pageData[JV.NODE_STYLE_COLLECTION][mergeBorder[JV.PROP_STYLE][JV.PROP_ID]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rst = destStyle[borderStr][JV.PROP_LINE_WEIGHT]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (cell[JV.PROP_AREA][borderStr] === mergeBorder[borderStr]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let destStyle = pageData[JV.NODE_STYLE_COLLECTION][mergeBorder[JV.PROP_STYLE][JV.PROP_ID]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (needFurtherChk) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (cell[JV.PROP_AREA][JV.PROP_TOP] >= mergeBorder[JV.PROP_TOP] && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        cell[JV.PROP_AREA][JV.PROP_BOTTOM] <= mergeBorder[JV.PROP_BOTTOM]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        rst = destStyle[borderStr][JV.PROP_LINE_WEIGHT]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rst = destStyle[borderStr][JV.PROP_LINE_WEIGHT]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return parseInt(rst); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -503,10 +536,10 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let sheetBorder = pageData[JV.NODE_STYLE_COLLECTION][cell.style]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let mergedBorder = private_getIniBorder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        mergedBorder[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_LEFT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        mergedBorder[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_RIGHT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        mergedBorder[JV.PROP_TOP][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_TOP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        mergedBorder[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_BOTTOM); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mergedBorder[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_LEFT, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mergedBorder[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_RIGHT, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mergedBorder[JV.PROP_TOP][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_TOP, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mergedBorder[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_BOTTOM, false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let i = 0; i < stylesObj.borders.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let border = stylesObj.borders[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (private_checkBorder(cell, border, mergedBorder)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -723,12 +756,14 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private_cacheMergeBandBorderIdxs(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (sheetData) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //current sheet data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            currentPageMergePos = sheetData[JV.PAGE_SPECIAL_MERGE_POS]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self_setDataEx(sheetData, yPos, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //total data in one sheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let cnt = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (let i = 0; i < pageData.items.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let shtItemData = pageData.items[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                currentPageMergePos = shtItemData[JV.PAGE_SPECIAL_MERGE_POS]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let tmpPos = yMultiPos[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 cellIdx = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 self_setDataEx(shtItemData, tmpPos, cnt); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -758,15 +793,30 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (paperSizeIdx >= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         pStr = 'paperSize="' + JV.PAGES_SIZE_IDX[paperSizeIdx] + '"'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let orientationStr = (pageData[JV.NODE_PAGE_INFO][0] > pageData[JV.NODE_PAGE_INFO][1])?'landscape':'portrait'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let orientationStr = (pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][0] > pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][1])?'landscape':'portrait'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     rst.push('<pageSetup ' + pStr + ' fitToWidth="0" fitToHeight="0" orientation="' + orientationStr + '" />'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     rst.push('<headerFooter alignWithMargins="0"/>'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     rst.push('</worksheet>'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function mergeProperties(orgObj, newObj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let orgPropArr = [], newPropArr = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (let p in orgObj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        orgPropArr.push(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (let p in newObj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        newPropArr.push(p); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (let i = 0; i < newPropArr.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (orgPropArr.indexOf(newPropArr[i]) < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            orgObj[newPropArr[i]] = newObj[newPropArr[i]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    exportExcel: function (pageData, paperSize, fName, options, callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    exportExcel: function (pageData, paperSize, fName, options, custSheetNames, callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rptOptions = ({singlePage: false, fileName: 'report'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (options === 'true') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rptOptions.singlePage = true; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -776,8 +826,14 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (isSinglePage) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sheets.push({sheetName: '全部页'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (let i = 0; i < pageData.items.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                sheets.push({sheetName: '第' + (i + 1) + '页'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (custSheetNames && custSheetNames.length === pageData.items.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let i = 0; i < pageData.items.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sheets.push({sheetName: custSheetNames[i]}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let i = 0; i < pageData.items.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sheets.push({sheetName: '第' + (i + 1) + '页'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //1. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -849,5 +905,76 @@ module.exports = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //return zip.generateNodeStream({type:'nodebuffer',streamFiles:true}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return zip; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    exportExcelInOneBook: function (pageDataArray, paperSize, fName, callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = this, newPageData = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //1. 重新编排一下数据,把一份报表的pageData合并到一起作为一个Sheet输出(需要重新调整数据纵向坐标),多份报表数据就形成多个Sheet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //   -- 简单来说,就是重新包装数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 1.1 newPageData外围属性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let newContrl = {}, newFont = {}, newStyle = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (let i = 0; i < pageDataArray.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mergeProperties(newContrl, pageDataArray[i][JV.NODE_CONTROL_COLLECTION]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mergeProperties(newFont, pageDataArray[i][JV.NODE_FONT_COLLECTION]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mergeProperties(newStyle, pageDataArray[i][JV.NODE_STYLE_COLLECTION]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            newPageData[JV.NODE_CONTROL_COLLECTION] = newContrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            newPageData[JV.NODE_FONT_COLLECTION] = newFont; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            newPageData[JV.NODE_STYLE_COLLECTION] = newStyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            newPageData[JV.NODE_PAGE_INFO] = pageDataArray[0][JV.NODE_PAGE_INFO]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            newPageData[JV.BAND_PROP_MERGE_BAND] = pageDataArray[0][JV.BAND_PROP_MERGE_BAND]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 1.2 重新设置pageDataArray的各个cell的Top/Bottom坐标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let sheetNames = [], newPagePos = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (let i = 0; i < pageDataArray.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let offsetY = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let mergeBand = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mergeBand[JV.PROP_LEFT] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mergeBand[JV.PROP_RIGHT] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mergeBand[JV.PROP_TOP] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mergeBand[JV.PROP_BOTTOM] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                newPagePos.push(mergeBand); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mergeBand[JV.PROP_LEFT].push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND][JV.PROP_LEFT]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mergeBand[JV.PROP_RIGHT].push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND][JV.PROP_RIGHT]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sheetNames.push(pageDataArray[i][JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let j = 0; j < pageDataArray[i].items.length; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    let maxY = 0, minY = 100000; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    mergeBand[JV.PROP_TOP].push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND][JV.PROP_TOP] + offsetY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    mergeBand[JV.PROP_BOTTOM].push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND][JV.PROP_BOTTOM] + offsetY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (let k = 0; k < pageDataArray[i].items[j].cells.length; k++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (maxY < pageDataArray[i].items[j].cells[k][JV.PROP_AREA][JV.PROP_BOTTOM]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            maxY = pageDataArray[i].items[j].cells[k][JV.PROP_AREA][JV.PROP_BOTTOM]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (minY > pageDataArray[i].items[j].cells[k][JV.PROP_AREA][JV.PROP_TOP]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            minY = pageDataArray[i].items[j].cells[k][JV.PROP_AREA][JV.PROP_TOP]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        pageDataArray[i].items[j].cells[k][JV.PROP_AREA][JV.PROP_BOTTOM] += offsetY; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        pageDataArray[i].items[j].cells[k][JV.PROP_AREA][JV.PROP_TOP] += offsetY; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    offsetY += (maxY - minY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //2. newPageData的items属性 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            newPageData.items = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (let i = 0; i < pageDataArray.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let pageItem = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                pageItem[JV.PROP_PAGE_SEQ] = i + 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                pageItem[JV.PROP_CELLS] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let j = 0; j < pageDataArray[i].items.length; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (let k = 0; k < pageDataArray[i].items[j].cells.length; k++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        pageItem[JV.PROP_CELLS].push(pageDataArray[i].items[j].cells[k]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                pageItem[JV.PAGE_SPECIAL_MERGE_POS] = newPagePos[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                newPageData.items.push(pageItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //3. everything is ok, then call me 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            me.exportExcel(newPageData, paperSize, fName, 'false', sheetNames, callback); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fsUtil.wirteObjToFile(newPageData, 'D:/GitHome/ConstructionOperation/tmp/combinedHeader.js'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |