JavaScript:EXCEL文件讀取

/* 讀取excel文件 
* 基於xlsx.core.min.js
* 下載地址:https://github.com/SheetJS/js-xlsx/blob/master/dist/xlsx.core.min.js
* ele為input:file文件,onlyone是否只讀取第一個表格
* callback回調函數,第一個參數為JSON數據,第二個為讀取的區域範圍
*/
function readExcel(o,callback) {
    var type=o.type?o.type.toLowerCase():'array';
    var output=type=="array"?[]:{}; // 數據存儲
    var ele=o.ele;
    ele.onchange=function(e) {
        var files = e.target.files;
        var fileReader = new FileReader();
        fileReader.onload = function(ev) {
            var area = '';// 表格的範圍,用於判斷表頭數量                
            try {
                var data = ev.target.result,
                    workbook = XLSX.read(data,{type: 'binary'}); // 以二進制流讀取文件
            } catch (e) {
                alert('文件类型或数据格式不正确');
                return;
            }                    
            // 遍歷每張表讀取數據
            for (var sheet in workbook.Sheets) {
                if (workbook.Sheets.hasOwnProperty(sheet)) {
                    area = workbook.Sheets[sheet]['!ref'];
                    if(o.onlyone){
                        output = output.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
                        break; //是否只打開第一張表
                    }else{
                        switch (type){
                            case 'array':
                                output = output.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
                                break;
                            case "object":
                                output[sheet]=XLSX.utils.sheet_to_json(workbook.Sheets[sheet]);
                                break;
                        }
                    }
                }
            }
            callback?callback(output,area):'';
        };
        fileReader.readAsBinaryString(files[0]); // 以二進制方式打開文件
    };
}

 

posted @ 2019-03-08 11:44  漫冬飄雪  阅读(855)  评论(0编辑  收藏  举报