forked from sheetjs/sheetjs
SheetJS
7b6fb7b327
- read MSO HTML (fixes #419 h/t @vineetl fixes #458 h/t @tienne) - roll out xml namespace fix (closes #362 h/t @PierreOCXP) - cellDates clarifications
35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
|
|
/* uncomment the next line for encoding support */
|
|
/*:: declare var XLSX: XLSXModule; */
|
|
/*:: declare var self: DedicatedWorkerGlobalScope; */
|
|
importScripts('dist/cpexcel.js');
|
|
importScripts('jszip.js');
|
|
importScripts('xlsx.js');
|
|
/* uncomment the next line for ODS support */
|
|
importScripts('dist/ods.js');
|
|
/*::self.*/postMessage({t:"ready"});
|
|
|
|
function ab2str(data) {
|
|
var o = "", l = 0, w = 10240;
|
|
for(; l<data.byteLength/w; ++l) o+=String.fromCharCode.apply(null,/*::(*/new Uint8Array(data.slice(l*w,l*w+w))/*:: :any)*/);
|
|
o+=String.fromCharCode.apply(null, /*::(*/new Uint8Array(data.slice(l*w))/*:: :any)*/);
|
|
return o;
|
|
}
|
|
|
|
function s2ab(s/*:string*/) {
|
|
var b = new ArrayBuffer(s.length*2), v = new Uint16Array(b);
|
|
for (var i=0; i != s.length; ++i) v[i] = s.charCodeAt(i);
|
|
return [v, b];
|
|
}
|
|
|
|
onmessage = function (oEvent) {
|
|
var v;
|
|
try {
|
|
v = XLSX.read(ab2str(oEvent.data), {type: 'binary'});
|
|
} catch(e) { /*::self.*/postMessage({t:"e",d:e.stack}); }
|
|
var res = {t:"xlsx", d:JSON.stringify(v)};
|
|
var r = s2ab(res.d)[1];
|
|
/*::self.*/
|
|
postMessage(r, [r]);
|
|
};
|