diff --git a/package.json b/package.json index aae9b56..cc2b527 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xlsx", - "version": "0.0.8", + "version": "0.0.9", "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 cc68e8d..ae59a47 100644 --- a/xlsx.js +++ b/xlsx.js @@ -121,12 +121,13 @@ function parseSheet(data) { //TODO: use a real xml parser case 'n': p.v = parseFloat(p.v); break; case 's': p.v = strs[parseInt(p.v, 10)].t; break; case 'str': break; // normal string - case 'b': - //Parse a boolean. - //I'm not sure how robust this method is. - p.v = Boolean(p.v); - break; - default: throw "Unrecognized cell type [" + p.t + "] with value: " + p.v; + case 'b': + switch(p.v) { + case '0': case 'FALSE': case "false": case false: p.v=false; break; + case '1': case 'TRUE': case "true": case true: p.v=true; break; + default: throw "Unrecognized boolean: " + p.v; + } break; + default: throw "Unrecognized cell type: " + p.t; } //s.cells[cell.r] = p; s[cell.r] = p; @@ -396,6 +397,7 @@ function sheet_to_csv(sheet) { switch(val.t){ case 'n': return val.v; case 's': case 'str': return JSON.stringify(val.v); + case 'b': return val.v ? "TRUE" : "FALSE"; default: throw 'unrecognized type ' + val.t; } };