|
@@ -46,7 +46,7 @@ function writeApp(sheets) {
|
|
|
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:lpstr>工作�?</vt:lpstr></vt:variant>');
|
|
|
rst.push('<vt:variant><vt:i4>' + sheets.length + '</vt:i4></vt:variant>');
|
|
|
rst.push('</vt:vector>');
|
|
|
rst.push('</HeadingPairs>');
|
|
@@ -125,7 +125,7 @@ function writeTheme(){
|
|
|
var rst = fs.readFileSync(__dirname + '/excel_base_files/theme1.xml', 'utf8', 'r');
|
|
|
return rst;
|
|
|
}
|
|
|
-function writeStyles(styleList){
|
|
|
+function writeStyles(stylesObj){
|
|
|
//
|
|
|
}
|
|
|
function writeSharedString(sharedStrList){
|
|
@@ -140,14 +140,14 @@ function writeSharedString(sharedStrList){
|
|
|
}
|
|
|
return rst;
|
|
|
}
|
|
|
-function writeSheets(pageData, sharedStrList, styleList){
|
|
|
+function writeSheets(pageData, sharedStrList, stylesObj){
|
|
|
var rst = [];
|
|
|
for (var i = 0; i < pageData.items.length; i++) {
|
|
|
- rst.push(writeSheet(pageData.items[i], sharedStrList, styleList));
|
|
|
+ rst.push(writeSheet(pageData.items[i], sharedStrList, stylesObj));
|
|
|
}
|
|
|
return rst;
|
|
|
}
|
|
|
-function writeSheet(sheetData, sharedStrList, styleList){
|
|
|
+function writeSheet(sheetData, sharedStrList, stylesObj){
|
|
|
var rst = [], xPos = [], yPos = [], headerStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
|
xPos.push(0);
|
|
|
yPos.push(0);
|
|
@@ -209,9 +209,122 @@ function writeSheet(sheetData, sharedStrList, styleList){
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
+ private_getFontId = function(cell) {
|
|
|
+ var rst = 0, hasFont = false;
|
|
|
+ if (!(stylesObj.fonts)) {
|
|
|
+ stylesObj.fonts = [];
|
|
|
+ //for (var i = 0; i < sheetData.font_collection)
|
|
|
+ }
|
|
|
+ var sheetFont = sheetData.font_collection[cell.font];
|
|
|
+ for (var i = 0; i < stylesObj.fonts.length; i++) {
|
|
|
+ var font = stylesObj.fonts[i];
|
|
|
+ if (sheetFont) {
|
|
|
+ if (font[JV.FONT_PROPS[0]] === sheetFont[JV.FONT_PROPS[0]] && font.size === Math.round(sheetFont[JV.FONT_PROPS[1]] * 3 / 4)) {
|
|
|
+ hasFont = true;
|
|
|
+ rst = i;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!hasFont) {
|
|
|
+ var font = {};
|
|
|
+ font[JV.FONT_PROPS[0]] = sheetFont[JV.FONT_PROPS[0]];
|
|
|
+ font.size = Math.round(sheetFont[JV.FONT_PROPS[1]] * 3 / 4);
|
|
|
+ font.charset = 134;
|
|
|
+ font.scheme = "minor";
|
|
|
+ stylesObj.fonts.push(font);
|
|
|
+ rst = stylesObj.fonts.length - 1;
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ };
|
|
|
+ private_checkBorder = function(border, sheetBorder) {
|
|
|
+ var rst = true, borderLineWidths = [], sheetBorderLineWidths = [];
|
|
|
+ borderLineWidths.push(border[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT]);
|
|
|
+ borderLineWidths.push(border[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT]);
|
|
|
+ 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(parseInt(border[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT]));
|
|
|
+ } else {
|
|
|
+ sheetBorderLineWidths.push(0);
|
|
|
+ }
|
|
|
+ if (sheetBorder[JV.PROP_RIGHT] && sheetBorder[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT]) {
|
|
|
+ sheetBorderLineWidths.push(parseInt(border[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT]));
|
|
|
+ } else {
|
|
|
+ sheetBorderLineWidths.push(0);
|
|
|
+ }
|
|
|
+ if (sheetBorder[JV.PROP_TOP] && sheetBorder[JV.PROP_TOP][JV.PROP_LINE_WEIGHT]) {
|
|
|
+ sheetBorderLineWidths.push(parseInt(border[JV.PROP_TOP][JV.PROP_LINE_WEIGHT]));
|
|
|
+ } else {
|
|
|
+ sheetBorderLineWidths.push(0);
|
|
|
+ }
|
|
|
+ if (sheetBorder[JV.PROP_BOTTOM] && sheetBorder[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT]) {
|
|
|
+ sheetBorderLineWidths.push(parseInt(border[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT]));
|
|
|
+ } else {
|
|
|
+ sheetBorderLineWidths.push(0);
|
|
|
+ }
|
|
|
+ for (var i = 0; i < 4; i++) {
|
|
|
+ if (borderLineWidths[i] != sheetBorderLineWidths[i]) {
|
|
|
+ rst = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ };
|
|
|
+ private_getBorderId = function(cell) {
|
|
|
+ var rst = 0, hasBorder = false;
|
|
|
+ if (!(stylesObj.borders)) {
|
|
|
+ stylesObj.borders = [];
|
|
|
+ }
|
|
|
+ var sheetBorder = sheetData.style_collection[cell.style];
|
|
|
+ for (var i = 0; i < stylesObj.borders.length; i++) {
|
|
|
+ var border = stylesObj.borders[i];
|
|
|
+ if (private_checkBorder(border, sheetBorder)) {
|
|
|
+ hasBorder = true;
|
|
|
+ rst = i;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!hasBorder) {
|
|
|
+ var border = {};
|
|
|
+ border[JV.PROP_LEFT] = {};
|
|
|
+ border[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT] = 0;
|
|
|
+ border[JV.PROP_RIGHT] = {};
|
|
|
+ border[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT] = 0;
|
|
|
+ border[JV.PROP_TOP] = {};
|
|
|
+ border[JV.PROP_TOP][JV.PROP_LINE_WEIGHT] = 0;
|
|
|
+ border[JV.PROP_BOTTOM] = {};
|
|
|
+ border[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT] = 0;
|
|
|
+ if (sheetBorder && sheetBorder[JV.PROP_LEFT]) {
|
|
|
+ border[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT] = parseInt(sheetBorder[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT]);
|
|
|
+ }
|
|
|
+ if (sheetBorder && sheetBorder[JV.PROP_RIGHT]) {
|
|
|
+ border[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT] = parseInt(sheetBorder[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT]);
|
|
|
+ }
|
|
|
+ if (sheetBorder && sheetBorder[JV.PROP_TOP]) {
|
|
|
+ border[JV.PROP_TOP][JV.PROP_LINE_WEIGHT] = parseInt(sheetBorder[JV.PROP_TOP][JV.PROP_LINE_WEIGHT]);
|
|
|
+ }
|
|
|
+ if (sheetBorder && sheetBorder[JV.PROP_BOTTOM]) {
|
|
|
+ border[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT] = parseInt(sheetBorder[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT]);
|
|
|
+ }
|
|
|
+ stylesObj.borders.push(border);
|
|
|
+ rst = stylesObj.borders.length - 1;
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ };
|
|
|
private_getStyleIdx = function(cell) {
|
|
|
- var rst = 1;
|
|
|
- //
|
|
|
+ var rst = 1, hasStyle = false;
|
|
|
+ if (!(stylesObj.cellXfs)) stylesObj.cellXfs = [];
|
|
|
+ for (var i = 0; i < stylesObj.cellXfs.length; i++) {
|
|
|
+ //check font and border
|
|
|
+ var fontId = private_getFontId(cell);
|
|
|
+ var cellStyle = stylesObj.cellXfs[i];
|
|
|
+ }
|
|
|
+ if (!hasStyle) {
|
|
|
+ //add new style
|
|
|
+ }
|
|
|
return rst;
|
|
|
};
|
|
|
private_setCols = function(){
|