1. 程式人生 > >JS匯入Excel實戰

JS匯入Excel實戰

下載ZIP後解壓得到xlsx.full.min.js

<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);
}