From 5d79aca2da147761939d8268ee7b5a7e2ef40f08 Mon Sep 17 00:00:00 2001 From: SheetJS Date: Mon, 28 Oct 2013 13:28:17 -0700 Subject: [PATCH] version bump 0.2.8: range fix Fixes #37 --- bits/70_xlsx.js | 11 ++++++++--- package.json | 2 +- xlsx.js | 11 ++++++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/bits/70_xlsx.js b/bits/70_xlsx.js index 12db18d..6e2b7b7 100644 --- a/bits/70_xlsx.js +++ b/bits/70_xlsx.js @@ -103,7 +103,7 @@ function parseSheet(data) { /* 18.3.1.35 dimension CT_SheetDimension ? */ var ref = data.match(//); - if(ref && ref.indexOf(":") !== -1) s["!ref"] = ref[1]; + if(ref && ref.length == 2 && ref[1].indexOf(":") !== -1) s["!ref"] = ref[1]; var refguess = {s: {r:1000000, c:1000000}, e: {r:0, c:0} }; var q = ["v","f"]; @@ -121,9 +121,14 @@ function parseSheet(data) { /* 18.3.1.4 c CT_Cell */ var cells = x.substr(x.indexOf('>')+1).split(/ idx - 1) refguess.s.c = idx - 1; - if(refguess.e.c < idx - 1) refguess.e.c = idx - 1; + if(cref && cref.length == 2) { + var cref_cell = decode_cell(cref[1]); + idx = cref_cell.c; + } + if(refguess.s.c > idx) refguess.s.c = idx; + if(refguess.e.c < idx) refguess.e.c = idx; var cell = parsexmltag((c.match(/]*>/)||[c])[0]); delete cell[0]; var d = c.substr(c.indexOf('>')+1); var p = {}; diff --git a/package.json b/package.json index 6e21f65..c99a6d7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xlsx", - "version": "0.2.7-d", + "version": "0.2.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 89d82ae..257c1db 100644 --- a/xlsx.js +++ b/xlsx.js @@ -533,7 +533,7 @@ function parseSheet(data) { /* 18.3.1.35 dimension CT_SheetDimension ? */ var ref = data.match(//); - if(ref && ref.indexOf(":") !== -1) s["!ref"] = ref[1]; + if(ref && ref.length == 2 && ref[1].indexOf(":") !== -1) s["!ref"] = ref[1]; var refguess = {s: {r:1000000, c:1000000}, e: {r:0, c:0} }; var q = ["v","f"]; @@ -551,9 +551,14 @@ function parseSheet(data) { /* 18.3.1.4 c CT_Cell */ var cells = x.substr(x.indexOf('>')+1).split(/ idx - 1) refguess.s.c = idx - 1; - if(refguess.e.c < idx - 1) refguess.e.c = idx - 1; + if(cref && cref.length == 2) { + var cref_cell = decode_cell(cref[1]); + idx = cref_cell.c; + } + if(refguess.s.c > idx) refguess.s.c = idx; + if(refguess.e.c < idx) refguess.e.c = idx; var cell = parsexmltag((c.match(/]*>/)||[c])[0]); delete cell[0]; var d = c.substr(c.indexOf('>')+1); var p = {};