| 
					
				 | 
			
			
				@@ -196,14 +196,60 @@ function writeStyles(stylesObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for (let i = 0; i < stylesObj.cellXfs.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let excelStyle = stylesObj.cellXfs[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rst.push('<xf numFmtId="0" fontId="' + excelStyle.fontId + '" fillId="0" borderId="' + excelStyle.borderId + '" xfId="0">'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let alignStr = '<alignment horizontal="' + excelStyle[JV.CONTROL_PROPS[2]] + '" vertical="' + excelStyle[JV.CONTROL_PROPS[3]] + '"'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //pageData[JV.NODE_FONT_COLLECTION] excelStyle.fontId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let alignStr = "<alignment"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let textRotation = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let newHorizontal = excelStyle[JV.CONTROL_PROPS[2]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let newVertical = excelStyle[JV.CONTROL_PROPS[3]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (parseInt(excelStyle.fontAngle) !== 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let tmpH = newHorizontal, tmpV = newVertical; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (excelStyle.fontAngle > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                textRotation = 180; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (newHorizontal === "left") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpV = 'top'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if (newHorizontal === "right") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpV = 'bottom'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpV = 'center'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (newVertical === "top") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpH = 'right'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if (newVertical === "bottom") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpH = 'left'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpH = 'center'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                textRotation = 90; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (newHorizontal === "left") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpV = 'bottom'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if (newHorizontal === "right") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpV = 'top'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpV = 'center'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (newVertical === "top") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpH = 'left'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if (newVertical === "bottom") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpH = 'right'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tmpH = 'center'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            newHorizontal = tmpH; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            newVertical = tmpV; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        alignStr += ' horizontal="' + newHorizontal + '" vertical="' + newVertical + '"'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (strUtil.convertStrToBoolean(excelStyle[JV.CONTROL_PROPS[1]])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            alignStr = alignStr + ' shrinkToFit="1"'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            alignStr += ' shrinkToFit="1"'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (strUtil.convertStrToBoolean(excelStyle[JV.CONTROL_PROPS[4]])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            alignStr = alignStr + ' wrapText="1"'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            alignStr += ' wrapText="1"'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        alignStr = alignStr + '/>'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (textRotation !== 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            alignStr += ' textRotation="' + textRotation + '"'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        alignStr += '/>'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rst.push(alignStr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         rst.push('</xf>'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -265,6 +311,7 @@ function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let sheetControl = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sheetControl.fontId = fontId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sheetControl.borderId = borderId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sheetControl.fontAngle = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let i = 0; i < JV.CONTROL_PROPS.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sheetControl[JV.CONTROL_PROPS[i]] = cellControl[JV.CONTROL_PROPS[i]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -427,7 +474,10 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let private_chkAndGetMergeLine = function(cell, sheetBorder, borderStr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let rst = sheetBorder[borderStr][JV.PROP_LINE_WEIGHT], mergeBorder = pageData[JV.BAND_PROP_MERGE_BAND]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let rst = 0, mergeBorder = pageData[JV.BAND_PROP_MERGE_BAND]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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]; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -452,29 +502,21 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             stylesObj.borders = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let i = 0; i < stylesObj.borders.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let border = stylesObj.borders[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (private_checkBorder(cell, border, sheetBorder)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (private_checkBorder(cell, border, mergedBorder)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 hasBorder = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 rst = i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!hasBorder) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            let border = private_getIniBorder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (sheetBorder && sheetBorder[JV.PROP_LEFT]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                border[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_LEFT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (sheetBorder && sheetBorder[JV.PROP_RIGHT]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                border[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_RIGHT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (sheetBorder && sheetBorder[JV.PROP_TOP]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                border[JV.PROP_TOP][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_TOP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (sheetBorder && sheetBorder[JV.PROP_BOTTOM]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                border[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_BOTTOM); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            stylesObj.borders.push(border); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            stylesObj.borders.push(mergedBorder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rst = stylesObj.borders.length - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -493,6 +535,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rst = 1, hasStyle = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!(stylesObj.cellXfs)) stylesObj.cellXfs = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let fontId = private_getFontId(cell); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let fontAngle = parseInt(pageData.font_collection[cell.font].FontAngle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let borderId = private_getBorderId(cell); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let cellControl = pageData[JV.NODE_CONTROL_COLLECTION][cell[JV.PROP_CONTROL]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let i = 0; i < stylesObj.cellXfs.length; i++) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -509,6 +552,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let sheetControl = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sheetControl.fontId = fontId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sheetControl.borderId = borderId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sheetControl.fontAngle = fontAngle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (let i = 0; i < JV.CONTROL_PROPS.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sheetControl[JV.CONTROL_PROPS[i]] = cellControl[JV.CONTROL_PROPS[i]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 |