forked from sheetjs/sheetjs
jshint passes
This commit is contained in:
parent
c5c3eebb09
commit
247fd22c06
@ -7,10 +7,10 @@ function fill(c,l) { return new Array(l+1).join(c); }
|
||||
function pad(v,d){var t=String(v);return t.length>=d?t:(fill(0,d-t.length)+t);}
|
||||
/* Options */
|
||||
var opts_fmt = {};
|
||||
function fixopts(o){for(y in opts_fmt) if(o[y]===undefined) o[y]=opts_fmt[y];}
|
||||
function fixopts(o){for(var y in opts_fmt) if(o[y]===undefined) o[y]=opts_fmt[y];}
|
||||
SSF.opts = opts_fmt;
|
||||
opts_fmt.date1904 = 0;
|
||||
opts_fmt.output = ""
|
||||
opts_fmt.output = "";
|
||||
opts_fmt.mode = "";
|
||||
var table_fmt = {
|
||||
1: '0',
|
||||
@ -62,17 +62,17 @@ var months = [
|
||||
['S', 'Sep', 'September'],
|
||||
['O', 'Oct', 'October'],
|
||||
['N', 'Nov', 'November'],
|
||||
['D', 'Dec', 'December'],
|
||||
['D', 'Dec', 'December']
|
||||
];
|
||||
var general_fmt = function(v) {
|
||||
if(typeof v === 'boolean') return v ? "TRUE" : "FALSE";
|
||||
}
|
||||
};
|
||||
SSF._general = general_fmt;
|
||||
var parse_date_code = function parse_date_code(v,opts) {
|
||||
var date = Math.floor(v), time = Math.round(86400 * (v - date)), dow=0;
|
||||
var dout=[], out={D:date, T:time}; fixopts(opts = (opts||{}));
|
||||
if(opts.date1904) date += 1462;
|
||||
if(date === 60) dout = [1900,2,29], dow=3;
|
||||
if(date === 60) (dout = [1900,2,29], dow=3); /* JSHint bug (issue #1010) */
|
||||
else {
|
||||
if(date > 60) --date;
|
||||
/* 1 = Jan 1 1900 */
|
||||
@ -95,7 +95,7 @@ var write_date = function(type, fmt, val) {
|
||||
case 'y': switch(fmt) { /* year */
|
||||
case 'y': case 'yy': return pad(val.y % 100,2);
|
||||
default: return val.y;
|
||||
}; break;
|
||||
} break;
|
||||
case 'm': switch(fmt) { /* month */
|
||||
case 'm': return val.m;
|
||||
case 'mm': return pad(val.m,2);
|
||||
@ -103,34 +103,34 @@ var write_date = function(type, fmt, val) {
|
||||
case 'mmmm': return months[val.m-1][2];
|
||||
case 'mmmmm': return months[val.m-1][0];
|
||||
default: throw 'bad month format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
case 'd': switch(fmt) { /* day */
|
||||
case 'd': return val.d;
|
||||
case 'dd': return pad(val.d,2);
|
||||
case 'ddd': return days[val.q][0];
|
||||
case 'dddd': return days[val.q][1];
|
||||
default: throw 'bad day format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
case 'h': switch(fmt) { /* 12-hour */
|
||||
case 'h': return 1+(val.H+11)%12;
|
||||
case 'hh': return pad(1+(val.H+11)%12, 2);
|
||||
default: throw 'bad hour format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
case 'H': switch(fmt) { /* 24-hour */
|
||||
case 'h': return val.H;
|
||||
case 'hh': return pad(val.H, 2);
|
||||
default: throw 'bad hour format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
case 'M': switch(fmt) { /* minutes */
|
||||
case 'm': return val.M;
|
||||
case 'mm': return pad(val.M, 2);
|
||||
default: throw 'bad minute format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
case 's': switch(fmt) { /* seconds */
|
||||
case 's': return val.S;
|
||||
case 'ss': return pad(val.S, 2);
|
||||
default: throw 'bad second format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
/* TODO: handle the ECMA spec format ee -> yy */
|
||||
case 'e': { return val.y; } break;
|
||||
case 'A': return (val.h>=12 ? 'P' : 'A') + fmt.substr(1);
|
||||
@ -144,10 +144,10 @@ SSF._split = split_fmt;
|
||||
function eval_fmt(fmt, v, opts) {
|
||||
var out = [], o = "", i = 0, c = "", lst='t', q = {}, dt;
|
||||
fixopts(opts = (opts || {}));
|
||||
var hr='H'
|
||||
var hr='H';
|
||||
/* Tokenize */
|
||||
while(i < fmt.length) {
|
||||
switch(c = fmt[i]) {
|
||||
switch((c = fmt[i])) {
|
||||
case '"': /* Literal text */
|
||||
for(o="";fmt[++i] !== '"';) o += fmt[(fmt[i] === '\\' ? ++i : i)];
|
||||
out.push({t:'t', v:o}); break;
|
||||
@ -163,8 +163,8 @@ function eval_fmt(fmt, v, opts) {
|
||||
q={t:c, v:o}; out.push(q); lst = c; break;
|
||||
case 'A':
|
||||
q={t:c,v:"A"};
|
||||
if(fmt.substr(i, 3) === "A/P") hr = 'h',i+=3;
|
||||
else if(fmt.substr(i,5) === "AM/PM") { q.v = "AM"; i+=5; hr = 'h' }
|
||||
if(fmt.substr(i, 3) === "A/P") (hr = 'h',i+=3);
|
||||
else if(fmt.substr(i,5) === "AM/PM") { q.v = "AM"; i+=5; hr = 'h'; }
|
||||
else q.t = "t";
|
||||
out.push(q); lst = c; break;
|
||||
case '[': /* TODO: Fix this -- ignore all conditionals and formatting */
|
||||
@ -196,12 +196,12 @@ function eval_fmt(fmt, v, opts) {
|
||||
}
|
||||
}
|
||||
|
||||
return out.map(function(x){return x.v}).join("");
|
||||
return out.map(function(x){return x.v;}).join("");
|
||||
}
|
||||
SSF._eval = eval_fmt;
|
||||
function choose_fmt(fmt, v) {
|
||||
if(typeof fmt === "string") fmt = split_fmt(fmt);
|
||||
if(!(typeof v === "number")) return fmt[3];
|
||||
if(typeof v !== "number") return fmt[3];
|
||||
return v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];
|
||||
}
|
||||
|
||||
@ -211,7 +211,7 @@ var format = function format(fmt,v,o) {
|
||||
if(typeof fmt === 'number') fmt = table_fmt[fmt];
|
||||
var f = choose_fmt(fmt, v, o);
|
||||
return eval_fmt(f, v, o);
|
||||
}
|
||||
};
|
||||
|
||||
SSF._choose = choose_fmt;
|
||||
SSF._table = table_fmt;
|
||||
|
@ -186,7 +186,7 @@ function parseSheet(data) {
|
||||
/* formatting */
|
||||
if(cell.s) {
|
||||
var cf = styles.CellXf[cell.s];
|
||||
if(cf && cf.numFmtId && cf.numFmtId != 0) {
|
||||
if(cf && cf.numFmtId && cf.numFmtId !== 0) {
|
||||
p.raw = p.v;
|
||||
p.rawt = p.t;
|
||||
try {
|
||||
@ -270,23 +270,23 @@ function parseProps(data) {
|
||||
if(cur && cur.length > 0) q[f] = cur[1];
|
||||
});
|
||||
|
||||
if(q["HeadingPairs"] && q["TitlesOfParts"]) {
|
||||
var v = parseVector(q["HeadingPairs"]);
|
||||
if(q.HeadingPairs && q.TitlesOfParts) {
|
||||
var v = parseVector(q.HeadingPairs);
|
||||
var j = 0, widx = 0;
|
||||
for(var i = 0; i !== v.length; ++i) {
|
||||
switch(v[i].v) {
|
||||
case "Worksheets": widx = j; p["Worksheets"] = +v[++i]; break;
|
||||
case "Worksheets": widx = j; p.Worksheets = +v[++i]; break;
|
||||
case "Named Ranges": ++i; break; // TODO: Handle Named Ranges
|
||||
default: console.error("Unrecognized key in Heading Pairs: " + v[i++].v);
|
||||
}
|
||||
}
|
||||
var parts = parseVector(q["TitlesOfParts"]).map(utf8read);
|
||||
p["SheetNames"] = parts.slice(widx, widx + p["Worksheets"]);
|
||||
var parts = parseVector(q.TitlesOfParts).map(utf8read);
|
||||
p.SheetNames = parts.slice(widx, widx + p.Worksheets);
|
||||
}
|
||||
p["Creator"] = q["dc:creator"];
|
||||
p["LastModifiedBy"] = q["cp:lastModifiedBy"];
|
||||
p["CreatedDate"] = new Date(q["dcterms:created"]);
|
||||
p["ModifiedDate"] = new Date(q["dcterms:modified"]);
|
||||
p.Creator = q["dc:creator"];
|
||||
p.LastModifiedBy = q["cp:lastModifiedBy"];
|
||||
p.CreatedDate = new Date(q["dcterms:created"]);
|
||||
p.ModifiedDate = new Date(q["dcterms:modified"]);
|
||||
return p;
|
||||
}
|
||||
|
||||
@ -310,9 +310,9 @@ function parseDeps(data) {
|
||||
var ctext = {};
|
||||
|
||||
function parseCT(data) {
|
||||
if(!data) return data;
|
||||
var ct = { workbooks: [], sheets: [], calcchains: [], themes: [], styles: [],
|
||||
coreprops: [], extprops: [], strs:[], xmlns: "" };
|
||||
if(data == null) return data;
|
||||
data.match(/<[^>]*>/g).forEach(function(x) {
|
||||
var y = parsexmltag(x);
|
||||
switch(y[0]) {
|
||||
@ -441,11 +441,11 @@ function parseWB(data) {
|
||||
|
||||
var z;
|
||||
/* defaults */
|
||||
for(z in WBPropsDef) if(null == wb.WBProps[z]) wb.WBProps[z] = WBPropsDef[z];
|
||||
for(z in CalcPrDef) if(null == wb.CalcPr[z]) wb.CalcPr[z] = CalcPrDef[z];
|
||||
for(z in WBPropsDef) if(typeof wb.WBProps[z] === 'undefined') wb.WBProps[z] = WBPropsDef[z];
|
||||
for(z in CalcPrDef) if(typeof wb.CalcPr[z] === 'undefined') wb.CalcPr[z] = CalcPrDef[z];
|
||||
|
||||
wb.WBView.forEach(function(w){for(var z in WBViewDef) if(null==w[z]) w[z]=WBViewDef[z]; });
|
||||
wb.Sheets.forEach(function(w){for(var z in SheetDef) if(null==w[z]) w[z]=SheetDef[z]; });
|
||||
wb.WBView.forEach(function(w){for(var z in WBViewDef) if(typeof w[z] === 'undefined') w[z]=WBViewDef[z]; });
|
||||
wb.Sheets.forEach(function(w){for(var z in SheetDef) if(typeof w[z] === 'undefined') w[z]=SheetDef[z]; });
|
||||
|
||||
_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904, 'date1904');
|
||||
|
||||
@ -455,7 +455,7 @@ function parseWB(data) {
|
||||
/* 18.8.31 numFmts CT_NumFmts */
|
||||
function parseNumFmts(t) {
|
||||
styles.NumberFmt = [];
|
||||
for(y in SSF._table) styles.NumberFmt[y] = SSF._table[y];
|
||||
for(var y in SSF._table) styles.NumberFmt[y] = SSF._table[y];
|
||||
t[0].match(/<[^>]*>/g).forEach(function(x) {
|
||||
var y = parsexmltag(x);
|
||||
switch(y[0]) {
|
||||
@ -501,7 +501,7 @@ function parseStyles(data) {
|
||||
var t;
|
||||
|
||||
/* numFmts CT_NumFmts ? */
|
||||
if(t=data.match(/<numFmts([^>]*)>.*<\/numFmts>/)) parseNumFmts(t);
|
||||
if((t=data.match(/<numFmts([^>]*)>.*<\/numFmts>/))) parseNumFmts(t);
|
||||
|
||||
/* fonts CT_Fonts ? */
|
||||
/* fills CT_Fills ? */
|
||||
@ -509,7 +509,7 @@ function parseStyles(data) {
|
||||
/* cellStyleXfs CT_CellStyleXfs ? */
|
||||
|
||||
/* cellXfs CT_CellXfs ? */
|
||||
if(t=data.match(/<cellXfs([^>]*)>.*<\/cellXfs>/)) parseCXfs(t);
|
||||
if((t=data.match(/<cellXfs([^>]*)>.*<\/cellXfs>/))) parseCXfs(t);
|
||||
|
||||
/* dxfs CT_Dxfs ? */
|
||||
/* tableStyles CT_TableStyles ? */
|
||||
@ -569,7 +569,7 @@ function parseZip(zip) {
|
||||
}
|
||||
|
||||
var _fs, jszip;
|
||||
if(typeof JSZip !== "undefined") jszip = JSZip;
|
||||
if(typeof JSZip !== 'undefined') jszip = JSZip;
|
||||
if (typeof exports !== 'undefined') {
|
||||
if (typeof module !== 'undefined' && module.exports) {
|
||||
if(typeof jszip === 'undefined') jszip = require('./jszip').JSZip;
|
||||
|
@ -66,7 +66,9 @@ function sheet_to_csv(sheet) {
|
||||
var stringify = function stringify(val) {
|
||||
switch(val.t){
|
||||
case 'n': return String(val.v);
|
||||
case 's': case 'str': return JSON.stringify(val.v);
|
||||
case 's': case 'str':
|
||||
if(typeof val.v === 'undefined') return "";
|
||||
return JSON.stringify(val.v);
|
||||
case 'b': return val.v ? "TRUE" : "FALSE";
|
||||
case 'e': return ""; /* throw out value in case of error */
|
||||
default: throw 'unrecognized type ' + val.t;
|
||||
@ -89,13 +91,14 @@ function sheet_to_csv(sheet) {
|
||||
|
||||
function get_formulae(ws) {
|
||||
var cmds = [];
|
||||
for(y in ws) if(y[0] !=='!' && ws.hasOwnProperty(y)) (function(y,x) {
|
||||
for(var y in ws) if(y[0] !=='!' && ws.hasOwnProperty(y)) {
|
||||
var x = ws[y];
|
||||
var val = "";
|
||||
if(x.f) val = x.f;
|
||||
else if(typeof x.v === 'number') val = x.v;
|
||||
else val = x.v;
|
||||
cmds.push(y + "=" + val);
|
||||
})(y,ws[y]);
|
||||
}
|
||||
return cmds;
|
||||
}
|
||||
|
||||
|
85
xlsx.js
85
xlsx.js
@ -9,10 +9,10 @@ function fill(c,l) { return new Array(l+1).join(c); }
|
||||
function pad(v,d){var t=String(v);return t.length>=d?t:(fill(0,d-t.length)+t);}
|
||||
/* Options */
|
||||
var opts_fmt = {};
|
||||
function fixopts(o){for(y in opts_fmt) if(o[y]===undefined) o[y]=opts_fmt[y];}
|
||||
function fixopts(o){for(var y in opts_fmt) if(o[y]===undefined) o[y]=opts_fmt[y];}
|
||||
SSF.opts = opts_fmt;
|
||||
opts_fmt.date1904 = 0;
|
||||
opts_fmt.output = ""
|
||||
opts_fmt.output = "";
|
||||
opts_fmt.mode = "";
|
||||
var table_fmt = {
|
||||
1: '0',
|
||||
@ -64,17 +64,17 @@ var months = [
|
||||
['S', 'Sep', 'September'],
|
||||
['O', 'Oct', 'October'],
|
||||
['N', 'Nov', 'November'],
|
||||
['D', 'Dec', 'December'],
|
||||
['D', 'Dec', 'December']
|
||||
];
|
||||
var general_fmt = function(v) {
|
||||
if(typeof v === 'boolean') return v ? "TRUE" : "FALSE";
|
||||
}
|
||||
};
|
||||
SSF._general = general_fmt;
|
||||
var parse_date_code = function parse_date_code(v,opts) {
|
||||
var date = Math.floor(v), time = Math.round(86400 * (v - date)), dow=0;
|
||||
var dout=[], out={D:date, T:time}; fixopts(opts = (opts||{}));
|
||||
if(opts.date1904) date += 1462;
|
||||
if(date === 60) dout = [1900,2,29], dow=3;
|
||||
if(date === 60) (dout = [1900,2,29], dow=3); /* JSHint bug (issue #1010) */
|
||||
else {
|
||||
if(date > 60) --date;
|
||||
/* 1 = Jan 1 1900 */
|
||||
@ -97,7 +97,7 @@ var write_date = function(type, fmt, val) {
|
||||
case 'y': switch(fmt) { /* year */
|
||||
case 'y': case 'yy': return pad(val.y % 100,2);
|
||||
default: return val.y;
|
||||
}; break;
|
||||
} break;
|
||||
case 'm': switch(fmt) { /* month */
|
||||
case 'm': return val.m;
|
||||
case 'mm': return pad(val.m,2);
|
||||
@ -105,34 +105,34 @@ var write_date = function(type, fmt, val) {
|
||||
case 'mmmm': return months[val.m-1][2];
|
||||
case 'mmmmm': return months[val.m-1][0];
|
||||
default: throw 'bad month format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
case 'd': switch(fmt) { /* day */
|
||||
case 'd': return val.d;
|
||||
case 'dd': return pad(val.d,2);
|
||||
case 'ddd': return days[val.q][0];
|
||||
case 'dddd': return days[val.q][1];
|
||||
default: throw 'bad day format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
case 'h': switch(fmt) { /* 12-hour */
|
||||
case 'h': return 1+(val.H+11)%12;
|
||||
case 'hh': return pad(1+(val.H+11)%12, 2);
|
||||
default: throw 'bad hour format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
case 'H': switch(fmt) { /* 24-hour */
|
||||
case 'h': return val.H;
|
||||
case 'hh': return pad(val.H, 2);
|
||||
default: throw 'bad hour format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
case 'M': switch(fmt) { /* minutes */
|
||||
case 'm': return val.M;
|
||||
case 'mm': return pad(val.M, 2);
|
||||
default: throw 'bad minute format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
case 's': switch(fmt) { /* seconds */
|
||||
case 's': return val.S;
|
||||
case 'ss': return pad(val.S, 2);
|
||||
default: throw 'bad second format: ' + fmt;
|
||||
}; break;
|
||||
} break;
|
||||
/* TODO: handle the ECMA spec format ee -> yy */
|
||||
case 'e': { return val.y; } break;
|
||||
case 'A': return (val.h>=12 ? 'P' : 'A') + fmt.substr(1);
|
||||
@ -146,10 +146,10 @@ SSF._split = split_fmt;
|
||||
function eval_fmt(fmt, v, opts) {
|
||||
var out = [], o = "", i = 0, c = "", lst='t', q = {}, dt;
|
||||
fixopts(opts = (opts || {}));
|
||||
var hr='H'
|
||||
var hr='H';
|
||||
/* Tokenize */
|
||||
while(i < fmt.length) {
|
||||
switch(c = fmt[i]) {
|
||||
switch((c = fmt[i])) {
|
||||
case '"': /* Literal text */
|
||||
for(o="";fmt[++i] !== '"';) o += fmt[(fmt[i] === '\\' ? ++i : i)];
|
||||
out.push({t:'t', v:o}); break;
|
||||
@ -165,8 +165,8 @@ function eval_fmt(fmt, v, opts) {
|
||||
q={t:c, v:o}; out.push(q); lst = c; break;
|
||||
case 'A':
|
||||
q={t:c,v:"A"};
|
||||
if(fmt.substr(i, 3) === "A/P") hr = 'h',i+=3;
|
||||
else if(fmt.substr(i,5) === "AM/PM") { q.v = "AM"; i+=5; hr = 'h' }
|
||||
if(fmt.substr(i, 3) === "A/P") (hr = 'h',i+=3);
|
||||
else if(fmt.substr(i,5) === "AM/PM") { q.v = "AM"; i+=5; hr = 'h'; }
|
||||
else q.t = "t";
|
||||
out.push(q); lst = c; break;
|
||||
case '[': /* TODO: Fix this -- ignore all conditionals and formatting */
|
||||
@ -198,12 +198,12 @@ function eval_fmt(fmt, v, opts) {
|
||||
}
|
||||
}
|
||||
|
||||
return out.map(function(x){return x.v}).join("");
|
||||
return out.map(function(x){return x.v;}).join("");
|
||||
}
|
||||
SSF._eval = eval_fmt;
|
||||
function choose_fmt(fmt, v) {
|
||||
if(typeof fmt === "string") fmt = split_fmt(fmt);
|
||||
if(!(typeof v === "number")) return fmt[3];
|
||||
if(typeof v !== "number") return fmt[3];
|
||||
return v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];
|
||||
}
|
||||
|
||||
@ -213,7 +213,7 @@ var format = function format(fmt,v,o) {
|
||||
if(typeof fmt === 'number') fmt = table_fmt[fmt];
|
||||
var f = choose_fmt(fmt, v, o);
|
||||
return eval_fmt(f, v, o);
|
||||
}
|
||||
};
|
||||
|
||||
SSF._choose = choose_fmt;
|
||||
SSF._table = table_fmt;
|
||||
@ -410,7 +410,7 @@ function parseSheet(data) {
|
||||
/* formatting */
|
||||
if(cell.s) {
|
||||
var cf = styles.CellXf[cell.s];
|
||||
if(cf && cf.numFmtId && cf.numFmtId != 0) {
|
||||
if(cf && cf.numFmtId && cf.numFmtId !== 0) {
|
||||
p.raw = p.v;
|
||||
p.rawt = p.t;
|
||||
try {
|
||||
@ -494,23 +494,23 @@ function parseProps(data) {
|
||||
if(cur && cur.length > 0) q[f] = cur[1];
|
||||
});
|
||||
|
||||
if(q["HeadingPairs"] && q["TitlesOfParts"]) {
|
||||
var v = parseVector(q["HeadingPairs"]);
|
||||
if(q.HeadingPairs && q.TitlesOfParts) {
|
||||
var v = parseVector(q.HeadingPairs);
|
||||
var j = 0, widx = 0;
|
||||
for(var i = 0; i !== v.length; ++i) {
|
||||
switch(v[i].v) {
|
||||
case "Worksheets": widx = j; p["Worksheets"] = +v[++i]; break;
|
||||
case "Worksheets": widx = j; p.Worksheets = +v[++i]; break;
|
||||
case "Named Ranges": ++i; break; // TODO: Handle Named Ranges
|
||||
default: console.error("Unrecognized key in Heading Pairs: " + v[i++].v);
|
||||
}
|
||||
}
|
||||
var parts = parseVector(q["TitlesOfParts"]).map(utf8read);
|
||||
p["SheetNames"] = parts.slice(widx, widx + p["Worksheets"]);
|
||||
var parts = parseVector(q.TitlesOfParts).map(utf8read);
|
||||
p.SheetNames = parts.slice(widx, widx + p.Worksheets);
|
||||
}
|
||||
p["Creator"] = q["dc:creator"];
|
||||
p["LastModifiedBy"] = q["cp:lastModifiedBy"];
|
||||
p["CreatedDate"] = new Date(q["dcterms:created"]);
|
||||
p["ModifiedDate"] = new Date(q["dcterms:modified"]);
|
||||
p.Creator = q["dc:creator"];
|
||||
p.LastModifiedBy = q["cp:lastModifiedBy"];
|
||||
p.CreatedDate = new Date(q["dcterms:created"]);
|
||||
p.ModifiedDate = new Date(q["dcterms:modified"]);
|
||||
return p;
|
||||
}
|
||||
|
||||
@ -534,9 +534,9 @@ function parseDeps(data) {
|
||||
var ctext = {};
|
||||
|
||||
function parseCT(data) {
|
||||
if(!data) return data;
|
||||
var ct = { workbooks: [], sheets: [], calcchains: [], themes: [], styles: [],
|
||||
coreprops: [], extprops: [], strs:[], xmlns: "" };
|
||||
if(data == null) return data;
|
||||
data.match(/<[^>]*>/g).forEach(function(x) {
|
||||
var y = parsexmltag(x);
|
||||
switch(y[0]) {
|
||||
@ -665,11 +665,11 @@ function parseWB(data) {
|
||||
|
||||
var z;
|
||||
/* defaults */
|
||||
for(z in WBPropsDef) if(null == wb.WBProps[z]) wb.WBProps[z] = WBPropsDef[z];
|
||||
for(z in CalcPrDef) if(null == wb.CalcPr[z]) wb.CalcPr[z] = CalcPrDef[z];
|
||||
for(z in WBPropsDef) if(typeof wb.WBProps[z] === 'undefined') wb.WBProps[z] = WBPropsDef[z];
|
||||
for(z in CalcPrDef) if(typeof wb.CalcPr[z] === 'undefined') wb.CalcPr[z] = CalcPrDef[z];
|
||||
|
||||
wb.WBView.forEach(function(w){for(var z in WBViewDef) if(null==w[z]) w[z]=WBViewDef[z]; });
|
||||
wb.Sheets.forEach(function(w){for(var z in SheetDef) if(null==w[z]) w[z]=SheetDef[z]; });
|
||||
wb.WBView.forEach(function(w){for(var z in WBViewDef) if(typeof w[z] === 'undefined') w[z]=WBViewDef[z]; });
|
||||
wb.Sheets.forEach(function(w){for(var z in SheetDef) if(typeof w[z] === 'undefined') w[z]=SheetDef[z]; });
|
||||
|
||||
_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904, 'date1904');
|
||||
|
||||
@ -679,7 +679,7 @@ function parseWB(data) {
|
||||
/* 18.8.31 numFmts CT_NumFmts */
|
||||
function parseNumFmts(t) {
|
||||
styles.NumberFmt = [];
|
||||
for(y in SSF._table) styles.NumberFmt[y] = SSF._table[y];
|
||||
for(var y in SSF._table) styles.NumberFmt[y] = SSF._table[y];
|
||||
t[0].match(/<[^>]*>/g).forEach(function(x) {
|
||||
var y = parsexmltag(x);
|
||||
switch(y[0]) {
|
||||
@ -725,7 +725,7 @@ function parseStyles(data) {
|
||||
var t;
|
||||
|
||||
/* numFmts CT_NumFmts ? */
|
||||
if(t=data.match(/<numFmts([^>]*)>.*<\/numFmts>/)) parseNumFmts(t);
|
||||
if((t=data.match(/<numFmts([^>]*)>.*<\/numFmts>/))) parseNumFmts(t);
|
||||
|
||||
/* fonts CT_Fonts ? */
|
||||
/* fills CT_Fills ? */
|
||||
@ -733,7 +733,7 @@ function parseStyles(data) {
|
||||
/* cellStyleXfs CT_CellStyleXfs ? */
|
||||
|
||||
/* cellXfs CT_CellXfs ? */
|
||||
if(t=data.match(/<cellXfs([^>]*)>.*<\/cellXfs>/)) parseCXfs(t);
|
||||
if((t=data.match(/<cellXfs([^>]*)>.*<\/cellXfs>/))) parseCXfs(t);
|
||||
|
||||
/* dxfs CT_Dxfs ? */
|
||||
/* tableStyles CT_TableStyles ? */
|
||||
@ -793,7 +793,7 @@ function parseZip(zip) {
|
||||
}
|
||||
|
||||
var _fs, jszip;
|
||||
if(typeof JSZip !== "undefined") jszip = JSZip;
|
||||
if(typeof JSZip !== 'undefined') jszip = JSZip;
|
||||
if (typeof exports !== 'undefined') {
|
||||
if (typeof module !== 'undefined' && module.exports) {
|
||||
if(typeof jszip === 'undefined') jszip = require('./jszip').JSZip;
|
||||
@ -893,7 +893,9 @@ function sheet_to_csv(sheet) {
|
||||
var stringify = function stringify(val) {
|
||||
switch(val.t){
|
||||
case 'n': return String(val.v);
|
||||
case 's': case 'str': return JSON.stringify(val.v);
|
||||
case 's': case 'str':
|
||||
if(typeof val.v === 'undefined') return "";
|
||||
return JSON.stringify(val.v);
|
||||
case 'b': return val.v ? "TRUE" : "FALSE";
|
||||
case 'e': return ""; /* throw out value in case of error */
|
||||
default: throw 'unrecognized type ' + val.t;
|
||||
@ -916,13 +918,14 @@ function sheet_to_csv(sheet) {
|
||||
|
||||
function get_formulae(ws) {
|
||||
var cmds = [];
|
||||
for(y in ws) if(y[0] !=='!' && ws.hasOwnProperty(y)) (function(y,x) {
|
||||
for(var y in ws) if(y[0] !=='!' && ws.hasOwnProperty(y)) {
|
||||
var x = ws[y];
|
||||
var val = "";
|
||||
if(x.f) val = x.f;
|
||||
else if(typeof x.v === 'number') val = x.v;
|
||||
else val = x.v;
|
||||
cmds.push(y + "=" + val);
|
||||
})(y,ws[y]);
|
||||
}
|
||||
return cmds;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user