异步文件流读取示例

前提-服务器上的文件是允许跨域的或是文件与运行页面是在同一域名下的,否则会报出以下错误:

跨域错误

演示

请求主要函数:

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>

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 131,231评论 18 138
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    程序员poetry阅读 112,140评论 24 450
  • 本文详细介绍了 XMLHttpRequest 相关知识,涉及内容: AJAX、XMLHTTP、XMLHttpReq...
    semlinker阅读 12,334评论 2 18
  • 今天早晨商议好了,下午放学要自己走回我们店里,虽然隔着学校还有一段距离,路上要经过两个红绿灯,再三嘱咐孩子,绿灯...
    王贺妈妈阅读 52评论 0 0
  • 直冲而来的马蹄声,惊扰了正在修补蛛网的蜘蛛,它渐行渐远,蜘蛛才敢露出面来。一个不懂事的孩童,被一阵微弱的鸟鸣引到这...
    羽阶伍个自在阅读 328评论 3 1
  • 机床的声音随着围起来的房子把人裹在里面 它独爱它的工人渐老的轮廓 一天又一天 机械,枯燥,无味 以及它布满机房散漫...
    合家颂阅读 282评论 0 0
  • 简书这样的创作平台,最大的特征是开放性和包容性,不管你年老年少、相貌俊丑、才华几斗,随时都可以进来。 这就跟股市一...
    东燕川阅读 160评论 2 3