|
@@ -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]];
|
|
|
}
|