<!DOCTYPE?html><html>
????<head>
????????<meta?charset="UTF-8">
????????<title></title>
????????<script?src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
????</head>
????<body>
????????<input?type="file"onchange="importf(this)"?/>
????????<div?id="demo"></div>
????????<script>
????????????/*
????????????FileReader共有4種讀取方法:
????????????1.readAsArrayBuffer(file):將文件讀取為ArrayBuffer。
????????????2.readAsBinaryString(file):將文件讀取為二進制字符串
????????????3.readAsDataURL(file):將文件讀取為Data?URL
????????????4.readAsText(file,?[encoding]):將文件讀取為文本,encoding缺省值為'UTF-8'
?????????????????????????*/
????????????var?wb;//讀取完成的數據
????????????var?rABS?=?false;?//是否將文件讀取為二進制字符串
????????????function?importf(obj)?{//導入
????????????????if(!obj.files)?{????????????????????return;
????????????????}????????????????var?f?=?obj.files[0];????????????????var?reader?=?new?FileReader();
????????????????reader.onload?=?function(e)?{????????????????????var?data?=?e.target.result;????????????????????if(rABS)?{
????????????????????????wb?=?XLSX.read(btoa(fixdata(data)),?{//手動轉化
????????????????????????????type:?'base64'
????????????????????????});
????????????????????}?else?{
????????????????????????wb?=?XLSX.read(data,?{????????????????????????????type:?'binary'
????????????????????????});
????????????????????}????????????????????//wb.SheetNames[0]是獲取Sheets中第一個Sheet的名字
????????????????????//wb.Sheets[Sheet名]獲取第一個Sheet的數據
????????????????????document.getElementById("demo").innerHTML=?JSON.stringify(?XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])?);
????????????????};????????????????if(rABS)?{
????????????????????reader.readAsArrayBuffer(f);
????????????????}?else?{
????????????????????reader.readAsBinaryString(f);
????????????????}
????????????}????????????function?fixdata(data)?{?//文件流轉BinaryString
????????????????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>
????</body></html>
js-xlsx 實現 Excel 文件讀取
Zoe_z
2019-01-22 12:14:22