前提-服务器上的文件是允许跨域的或是文件与运行页面是在同一域名下的,否则会报出以下错误:
请求主要函数:
function fetchAB(url, cb) {
var xhr = new XMLHttpRequest;
xhr.open('get', url, true);
xhr.responseType = 'arraybuffer';
xhr.onload = cb;
xhr.send();
};
结合js-xlsx读取xlsx文件在线示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
<script>
function fetchAB(url, cb) {
var xhr = new XMLHttpRequest;
xhr.open('get', url, true);
xhr.responseType = 'arraybuffer';
xhr.onload = cb;
xhr.send();
};
</script>
<script>
var wb;
var url = ""
function importf() {//导入
url = document.getElementById("url").value;
if (url) {
fetchAB(url, function () {
if (this.status == 200) {
wb = XLSX.read(btoa(fixdata(this.response)), {//手动转化
type: 'base64'
});
document.getElementById("demo").innerHTML = JSON.stringify(XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]));
}
});
}
}
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(l * w)));
return o;
}
</script>
</head>
<body>
<input type="text" id="url" />
<input type="button" onclick="importf()" value="读取" />
<div id="demo"></div>
</body>
</html>