forked from sheetjs/sheetjs
Worker HTML update
This commit is contained in:
parent
7581648544
commit
ec3cf450ad
15
index.html
15
index.html
@ -1,5 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- xlsx.js (C) 2013-2014 SheetJS http://sheetjs.com -->
|
||||
<!-- vim: set ts=2: -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
@ -37,6 +38,14 @@
|
||||
<script src="shim.js"></script>
|
||||
<script>
|
||||
var rABS = typeof FileReader !== "undefined" && typeof FileReader.prototype !== "undefined" && typeof FileReader.prototype.readAsBinaryString !== "undefined";
|
||||
function fixdata(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)));
|
||||
o+=String.fromCharCode.apply(null, new Uint8Array(data.slice(o.length)));
|
||||
return o;
|
||||
}
|
||||
|
||||
function xlsxworker(data, cb) {
|
||||
var worker = new Worker('./xlsxworker.js');
|
||||
worker.onmessage = function(e) {
|
||||
@ -46,7 +55,7 @@ function xlsxworker(data, cb) {
|
||||
case 'xlsx': cb(JSON.parse(e.data.d)); break;
|
||||
}
|
||||
};
|
||||
var arr = rABS ? data : btoa(String.fromCharCode.apply(null, new Uint8Array(data)));
|
||||
var arr = rABS ? data : btoa(fixdata(data));
|
||||
worker.postMessage({d:arr,b:rABS});
|
||||
}
|
||||
|
||||
@ -110,7 +119,7 @@ function process_wb(wb) {
|
||||
break;
|
||||
case "form":
|
||||
output = to_formulae(wb);
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
output = to_csv(wb);
|
||||
}
|
||||
@ -136,7 +145,7 @@ function handleDrop(e) {
|
||||
if(rABS) {
|
||||
wb = XLSX.read(data, {type: 'binary'});
|
||||
} else {
|
||||
var arr = String.fromCharCode.apply(null, new Uint8Array(data));
|
||||
var arr = fixdata(data);
|
||||
wb = XLSX.read(btoa(arr), {type: 'base64'});
|
||||
}
|
||||
process_wb(wb);
|
||||
|
28
shim.js
28
shim.js
@ -143,3 +143,31 @@ if (!Array.prototype.map) {
|
||||
return A;
|
||||
};
|
||||
}
|
||||
|
||||
// https://github.com/ttaubert/node-arraybuffer-slice
|
||||
// (c) 2013 Tim Taubert <tim@timtaubert.de>
|
||||
// arraybuffer-slice may be freely distributed under the MIT license.
|
||||
|
||||
"use strict";
|
||||
|
||||
if (!ArrayBuffer.prototype.slice) {
|
||||
ArrayBuffer.prototype.slice = function (begin, end) {
|
||||
begin = (begin|0) || 0;
|
||||
var num = this.byteLength;
|
||||
end = end === (void 0) ? num : (end|0);
|
||||
|
||||
// Handle negative values.
|
||||
if (begin < 0) begin += num;
|
||||
if (end < 0) end += num;
|
||||
|
||||
if (num === 0 || begin >= num || begin >= end) {
|
||||
return new ArrayBuffer(0);
|
||||
}
|
||||
|
||||
var length = Math.min(num - begin, end - begin);
|
||||
var target = new ArrayBuffer(length);
|
||||
var targetArray = new Uint8Array(target);
|
||||
targetArray.set(new Uint8Array(this, begin, length));
|
||||
return target;
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user