forked from sheetjs/sheetjs
version bump 0.1.2: Unicode Support
Motivated by inquiry regarding Hebrew support
This commit is contained in:
parent
c052dd7c92
commit
28873fc0b5
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "xlsx",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"author": "Niggler",
|
||||
"description": "(one day) a full-featured XLSX parser and writer. For now, primitive parser",
|
||||
"keywords": [
|
||||
|
32
xlsx.js
32
xlsx.js
@ -158,12 +158,30 @@ function parseVector(data) {
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
var utf8read = function(orig) {
|
||||
var out = "", i = 0, c = 0, c1 = 0, c2 = 0, c3 = 0;
|
||||
while (i < orig.length) {
|
||||
c = orig.charCodeAt(i++);
|
||||
if (c < 128) out += _chr(c);
|
||||
else {
|
||||
c2 = orig.charCodeAt(i++);
|
||||
if (c>191 && c<224) out += _chr((c & 31) << 6 | c2 & 63);
|
||||
else {
|
||||
c3 = orig.charCodeAt(i++);
|
||||
out += _chr((c & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
|
||||
}
|
||||
}
|
||||
}
|
||||
return out;
|
||||
};
|
||||
|
||||
function parseStrs(data) {
|
||||
var s = [];
|
||||
var sst = data.match(new RegExp("<sst ([^>]*)>([\\s\\S]*)<\/sst>","m"));
|
||||
if(sst) {
|
||||
s = sst[2].replace(/<si>/g,"").split(/<\/si>/).map(function(x) { var z = {};
|
||||
var y=x.match(/<(.*)>([\s\S]*)<\/.*/); if(y) z[y[1]]=unescapexml(y[2]); return z;});
|
||||
var y=x.match(/<(.*)>([\s\S]*)<\/.*/); if(y) z[y[1].split(" ")[0]]=utf8read(unescapexml(y[2])); return z;});
|
||||
|
||||
sst = parsexmltag(sst[1]); s.count = sst.count; s.uniqueCount = sst.uniqueCount;
|
||||
}
|
||||
@ -194,7 +212,7 @@ function parseProps(data) {
|
||||
default: console.error("Unrecognized key in Heading Pairs: " + v[i++].v);
|
||||
}
|
||||
}
|
||||
var parts = parseVector(q["TitlesOfParts"]);
|
||||
var parts = parseVector(q["TitlesOfParts"]).map(utf8read);
|
||||
p["SheetNames"] = parts.slice(widx, widx + p["Worksheets"])
|
||||
}
|
||||
p["Creator"] = q["dc:creator"];
|
||||
@ -262,7 +280,7 @@ function parseWB(data) {
|
||||
case '<bookViews>': case '</bookViews>': break; // aggregate workbookView
|
||||
case '<workbookView': delete y[0]; wb.WBView.push(y); break;
|
||||
case '<sheets>': case '</sheets>': break; // aggregate sheet
|
||||
case '<sheet': delete y[0]; wb.Sheets.push(y); break;
|
||||
case '<sheet': delete y[0]; y.name = utf8read(y.name); wb.Sheets.push(y); break;
|
||||
case '</extLst>': case '</workbook>': break;
|
||||
case '<workbookProtection/>': break; // LibreOffice
|
||||
case '<extLst>': break;
|
||||
@ -361,7 +379,9 @@ return this;
|
||||
|
||||
})();
|
||||
|
||||
function encode_col(col) { var s=""; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }
|
||||
var _chr = function(c) { return String.fromCharCode(c); };
|
||||
|
||||
function encode_col(col) { var s=""; for(++col; col; col=Math.floor((col-1)/26)) s = _chr(((col-1)%26) + 65) + s; return s; }
|
||||
function encode_row(row) { return "" + (row + 1); }
|
||||
function encode_cell(cell) { return encode_col(cell.c) + encode_row(cell.r); }
|
||||
|
||||
@ -388,8 +408,8 @@ function sheet_to_row_object_array(sheet){
|
||||
})];
|
||||
if(val){
|
||||
switch(val.t) {
|
||||
case "s": case "str": columnHeaders[C] = val.v; break;
|
||||
case "n": columnHeaders[C] = val.v; break;
|
||||
case 's': case 'str': columnHeaders[C] = val.v; break;
|
||||
case 'n': columnHeaders[C] = val.v; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user