JS匯入Excel實戰
阿新 • • 發佈:2018-11-09
<script src="${ctx}/static/js/lib/xlsx.full.min.js" type="text/javascript"></script>
<input type="file" id="import_Excel" style="display: inline;" onchange="importExcel(this)">
/** * 對匯入的excel進行解析 */ function importExcel(importExcel){ //判斷結論時準則不可以為空 if (!$("#testSpec").val()) { helper.alertDialog("Test Spec can not be empty!","danger"); $("#import_Excel").val(""); return } if (!$("#measuredWiringCs").val()) { helper.alertDialog("Cross Section can not be empty!","danger"); $("#import_Excel").val(""); return } if (!$("#baseMaterial").val()) { helper.alertDialog("Terminal Base Material can not be empty!","danger"); $("#import_Excel").val(""); return } bootbox.confirm("<h4>Are you sure to select the excel?</h4>", function(result){ if(result) { importExcelDataToReport(importExcel); } else { $("#import_Excel").val(""); } }); } /** * 將excel資料匯入Report */ function importExcelDataToReport(importExcel){ //獲取匯入的excel var excel = importExcel.files[0]; //建立fileReader物件和其載入方法 var fileReader = new FileReader(); fileReader.onload = function(excel) { //獲取工作簿 var workbook = XLSX.read(excel.target.result, {type: 'binary'}); //獲取指定sheet頁資料 var pullForce_Rows = XLSX.utils.sheet_to_json(workbook.Sheets["Pull Force"]); var cableSealRetention_Rows = XLSX.utils.sheet_to_json(workbook.Sheets["Cable Seal Retention"]); var voltageDrop_Rows = XLSX.utils.sheet_to_json(workbook.Sheets["Voltage Drop"]); var electricalCurrentCycling_Rows = XLSX.utils.sheet_to_json(workbook.Sheets["Electrical Current Cycling"]); var env_Rows = XLSX.utils.sheet_to_json(workbook.Sheets["ENV"]); //填充選擇的試驗項對應的資料 var testItems = $("#testItems").val(); if (testItems.indexOf("Pull Force")!=-1) { //填充Pull Force資料 for (var i = 0; i < pullForce_Rows.length; i++) { $("#pfcch1pf"+(i+1)).val(pullForce_Rows[i].拉力Force1); $("#pfcch2pf"+(i+1)).val(pullForce_Rows[i].拉力Force2); $("#pfcch3pf"+(i+1)).val(pullForce_Rows[i].拉力Force3); $("#pfcch4pf"+(i+1)).val(pullForce_Rows[i].拉力Force4); $("#pfcch5pf"+(i+1)).val(pullForce_Rows[i].拉力Force5); } //計算Pull Force結論 $("#pfcch1pf1").blur(); $("#pfcch2pf1").blur(); $("#pfcch3pf1").blur(); $("#pfcch4pf1").blur(); $("#pfcch5pf1").blur(); } if (testItems.indexOf("Cable Seal Retention")!=-1) { //填充Cable Seal Retention資料 for (var i = 0; i < cableSealRetention_Rows.length; i++) { $("#ich1cabs"+(i+1)).val(cableSealRetention_Rows[i].拉力Force1); $("#ich2cabs"+(i+1)).val(cableSealRetention_Rows[i].拉力Force1); $("#ich3cabs"+(i+1)).val(cableSealRetention_Rows[i].拉力Force1); } //計算Cable Seal Retention結論 $("#ich1cabs1").blur(); $("#ich2cabs1").blur(); $("#ich3cabs1").blur(); } if (testItems.indexOf("Voltage Drop Version")!=-1) { //填充Voltage Drop資料 for (var i = 0; i < voltageDrop_Rows.length; i++) { $("input[name='voltagedropCCH1.t_value"+(i+1)+"']").val(voltageDrop_Rows[i].總電壓降1); $("input[name='voltagedropCCH1.s_value"+(i+1)+"']").val(voltageDrop_Rows[i].焊接樣線壓降1); $("input[name='voltagedropCCH2.t_value"+(i+1)+"']").val(voltageDrop_Rows[i].總電壓降2); $("input[name='voltagedropCCH2.s_value"+(i+1)+"']").val(voltageDrop_Rows[i].焊接樣線壓降2); $("input[name='voltagedropCCH3.t_value"+(i+1)+"']").val(voltageDrop_Rows[i].總電壓降3); $("input[name='voltagedropCCH3.s_value"+(i+1)+"']").val(voltageDrop_Rows[i].焊接樣線壓降3); $("input[name='voltagedropCCH4.t_value"+(i+1)+"']").val(voltageDrop_Rows[i].總電壓降4); $("input[name='voltagedropCCH4.s_value"+(i+1)+"']").val(voltageDrop_Rows[i].焊接樣線壓降4); $("input[name='voltagedropCCH5.t_value"+(i+1)+"']").val(voltageDrop_Rows[i].總電壓降5); $("input[name='voltagedropCCH5.s_value"+(i+1)+"']").val(voltageDrop_Rows[i].焊接樣線壓降5); //計算Voltage Drop結論 $("input[name='voltagedropCCH1.t_value"+(i+1)+"']").blur(); $("input[name='voltagedropCCH2.t_value"+(i+1)+"']").blur(); $("input[name='voltagedropCCH3.t_value"+(i+1)+"']").blur(); $("input[name='voltagedropCCH4.t_value"+(i+1)+"']").blur(); $("input[name='voltagedropCCH5.t_value"+(i+1)+"']").blur(); } } if (testItems.indexOf("Current Cycling Version")!=-1) { //填充Electrical Current Cycling資料 for (var i = 0; i < electricalCurrentCycling_Rows.length; i++) { $("input[name='cchBeforeElec1.res"+(i+1)+"']").val(electricalCurrentCycling_Rows[i].試驗前壓接電阻1); $("input[name='cchBeforeElec1.voltage"+(i+1)+"']").val(electricalCurrentCycling_Rows[i].試驗後壓接電壓降1); $("input[name='cchBeforeElec2.res"+(i+1)+"']").val(electricalCurrentCycling_Rows[i].試驗前壓接電阻2); $("input[name='cchBeforeElec2.voltage"+(i+1)+"']").val(electricalCurrentCycling_Rows[i].試驗後壓接電壓降2); $("input[name='cchBeforeElec3.res"+(i+1)+"']").val(electricalCurrentCycling_Rows[i].試驗前壓接電阻3); $("input[name='cchBeforeElec3.voltage"+(i+1)+"']").val(electricalCurrentCycling_Rows[i].試驗後壓接電壓降3); $("input[name='cchBeforeElec4.res"+(i+1)+"']").val(electricalCurrentCycling_Rows[i].試驗前壓接電阻4); $("input[name='cchBeforeElec4.voltage"+(i+1)+"']").val(electricalCurrentCycling_Rows[i].試驗後壓接電壓降4); $("input[name='cchBeforeElec5.res"+(i+1)+"']").val(electricalCurrentCycling_Rows[i].試驗前壓接電阻5); $("input[name='cchBeforeElec5.voltage"+(i+1)+"']").val(electricalCurrentCycling_Rows[i].試驗後壓接電壓降5); } //計算Electrical Current Cycling結論 $("input[name='cchBeforeElec1.res1']").blur(); $("input[name='cchBeforeElec1.voltage1']").blur(); $("input[name='cchBeforeElec2.res1']").blur(); $("input[name='cchBeforeElec2.voltage1']").blur(); $("input[name='cchBeforeElec3.res1']").blur(); $("input[name='cchBeforeElec3.voltage1']").blur(); $("input[name='cchBeforeElec4.res1']").blur(); $("input[name='cchBeforeElec4.voltage1']").blur(); $("input[name='cchBeforeElec5.res1']").blur(); $("input[name='cchBeforeElec5.voltage1']").blur(); } if (testItems.indexOf("Voltage Drop ENV")!=-1) { //填充ENV資料 for (var i = 0; i < env_Rows.length; i++) { $("input[name='envCCH1.a_value"+(i+1)+"']").val(env_Rows[i].試驗前壓接電阻1); $("input[name='envCCH1.b_value"+(i+1)+"']").val(env_Rows[i].熱衝擊試驗後壓接電壓降1); $("input[name='envCCH1.c_value"+(i+1)+"']").val(env_Rows[i].溫溼度迴圈試驗後壓接電壓降1); $("input[name='envCCH2.a_value"+(i+1)+"']").val(env_Rows[i].試驗前壓接電阻2); $("input[name='envCCH2.b_value"+(i+1)+"']").val(env_Rows[i].熱衝擊試驗後壓接電壓降2); $("input[name='envCCH2.c_value"+(i+1)+"']").val(env_Rows[i].溫溼度迴圈試驗後壓接電壓降2); $("input[name='envCCH3.a_value"+(i+1)+"']").val(env_Rows[i].試驗前壓接電阻3); $("input[name='envCCH3.b_value"+(i+1)+"']").val(env_Rows[i].熱衝擊試驗後壓接電壓降3); $("input[name='envCCH3.c_value"+(i+1)+"']").val(env_Rows[i].溫溼度迴圈試驗後壓接電壓降3); $("input[name='envCCH4.a_value"+(i+1)+"']").val(env_Rows[i].試驗前壓接電阻4); $("input[name='envCCH4.b_value"+(i+1)+"']").val(env_Rows[i].熱衝擊試驗後壓接電壓降4); $("input[name='envCCH4.c_value"+(i+1)+"']").val(env_Rows[i].溫溼度迴圈試驗後壓接電壓降4); $("input[name='envCCH5.a_value"+(i+1)+"']").val(env_Rows[i].試驗前壓接電阻5); $("input[name='envCCH5.b_value"+(i+1)+"']").val(env_Rows[i].熱衝擊試驗後壓接電壓降5); $("input[name='envCCH5.c_value"+(i+1)+"']").val(env_Rows[i].溫溼度迴圈試驗後壓接電壓降5); } //計算ENV結論 $("input[name='envCCH1.a_value1']").blur(); $("input[name='envCCH1.b_value1']").blur(); $("input[name='envCCH1.c_value1']").blur(); $("input[name='envCCH2.a_value1']").blur(); $("input[name='envCCH2.b_value1']").blur(); $("input[name='envCCH2.c_value1']").blur(); $("input[name='envCCH3.a_value1']").blur(); $("input[name='envCCH3.b_value1']").blur(); $("input[name='envCCH3.c_value1']").blur(); $("input[name='envCCH4.a_value1']").blur(); $("input[name='envCCH4.b_value1']").blur(); $("input[name='envCCH4.c_value1']").blur(); $("input[name='envCCH5.a_value1']").blur(); $("input[name='envCCH5.b_value1']").blur(); $("input[name='envCCH5.c_value1']").blur(); } //清除選中的file檔案使可以重新選擇 //$("#import_Excel").val(""); //禁用excel使不可以重新選擇 //$("#import_Excel").attr("disabled",true); }; //手動觸發fileReader的載入方法 fileReader.readAsBinaryString(excel); }