/* 讀取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]); // 以二進制方式打開文件 }; }