利用 js-xlsx 實現 Excel 檔案匯入並解析Excel資料成json格式的資料並且獲取其中某列資料
阿新 • • 發佈:2019-02-16
1、首先需要匯入js
<script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
2、匯入檔案框
這裡importExcel(this)是方法,名字可以自己定義。
<input type="file"onchange="importExcel(this)" />
<div id="demo"></div>
3、js程式碼
/*
FileReader共有4種讀取方法:
1.readAsArrayBuffer(file):將檔案讀取為ArrayBuffer。
2.readAsBinaryString(file):將檔案讀取為二進位制字串
3.readAsDataURL(file):將檔案讀取為Data URL
4.readAsText(file, [encoding]):將檔案讀取為文字,encoding預設值為'UTF-8'
*/
var wb;//讀取完成的資料
var aa=[];
var text=[];
var rABS = false; //是否將檔案讀取為二進位制字串
function importExcel(obj) {//匯入
if(!obj.files) {
return;
}
const IMPORTFILE_MAXSIZE = 1*2048;//這裡可以自定義控制匯入檔案大小
var suffix = obj.files[0].name.split(".")[1]
if(suffix != 'xls' && suffix !='xlsx'){
alert('匯入的檔案格式不正確!')
return
}
if(obj.files[0].size/1024 > IMPORTFILE_MAXSIZE){
alert('匯入的表格檔案不能大於2M')
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的資料
aa=JSON.stringify( XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]) );
var u = eval('('+aa+')');
document.getElementById("demo").innerHTML= JSON.stringify( XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]) );
//獲取表格中為address的那列存入text中
for(var i=0;i<u.length;i++){
text.push(u[i].address);
}
};
if(rABS) {
reader.readAsArrayBuffer(f);
} else {
reader.readAsBinaryString(f);
}
}
匯入之後會在id為demo的div中將其全部列印,我這裡還有一個就是將我所需要的address那列存入單獨的一個text陣列中,方便其他方法使用。