diff --git a/package.json b/package.json index 612a824..aae9b56 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xlsx", - "version": "0.0.7", + "version": "0.0.8", "author": "Niggler", "description": "(one day) a full-featured XLSX parser and writer. For now, primitive parser", "keywords": [ diff --git a/xlsx.js b/xlsx.js index 6acaebb..ee626c3 100644 --- a/xlsx.js +++ b/xlsx.js @@ -115,7 +115,7 @@ function parseSheet(data) { //TODO: use a real xml parser var p = {}; q.forEach(function(f){var x=d.match(matchtag(f));if(x)p[f]=unescapexml(x[1]);}); /* SCHEMA IS ACTUALLY INCORRECT HERE. IF A CELL HAS NO T, EMIT "" */ - if(cell.t === undefined) { p.t = "str"; p.v = undefined; } + if(cell.t === undefined && p.v === undefined) { p.t = "str"; p.v = undefined; } else p.t = (cell.t ? cell.t : "n"); // default is "n" in schema switch(p.t) { case 'n': p.v = parseFloat(p.v); break; @@ -215,6 +215,7 @@ function parseCT(data) { function parseWB(data) { var wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: "" }; + var pass = false; data.match(/<[^>]*>/g).forEach(function(x) { var y = parsexmltag(x); switch(y[0]) { @@ -229,15 +230,20 @@ function parseWB(data) { case '': case '': break; // aggregate sheet case '': case '': case '': break; + case '': case '': break; case '': break; case '': delete y[0]; wb.CalcPr = y; break; case '': break; case '': pass=false; break; + + /* Introduced for Excel2013 Baseline */ + case '': pass=false; break; // TODO: do something + default: if(!pass) console.error("WB Tag",x,y); } }); if(wb.xmlns !== XMLNS_WB) throw "Unknown Namespace: " + wb.xmlns;