JavaScript|免费导入题库,考试复习工具,刷题神器,支持导入excel题库【完全免费+提供源码】

工具界面展示

 点击这里下载源代码↓↓↓

基于JS的导入EXCEL题库复习小工具_intitle:javascript搜题-Javascript文档类资源-CSDN下载


目录

一、工具使用说明

二、界面设计

三、逻辑控制代码


前言

        最新公司给了好多excel的复习题库,让我们去复习考试,一份份题库看效率太低,还有点枯燥,而且记忆起来比较困难。这时就想在网上找一下有没有免费的题库复习软件,支持导入excel题库,自己自主复习。找了半天,软件不是运行不了,就是要收费。

        于是自己就想想能不能用JavaScript自己写一个。随后,自己就东拼西凑,从网上找到一些可用代码,写了个小工具,实现了用JavaScript读取excel表题库,实现自动出题复习并算分。不过由于需要用到ie浏览器的excel AX控件,所以只能小工具只能用使用ie内核的浏览器使用。

        现将小工具分享给遇到同样问题的朋友们,代码写的一般,有兴趣的童鞋可以拿去改改,丰富一下功能。

        点击这里下载源代码↓↓↓

基于JS的导入EXCEL题库复习小工具_intitle:javascript搜题-Javascript文档类资源-CSDN下载javascript编写的EXCEL出题工具,工具实现了用javascript读取EXCEL表的复习intitle:javascript搜题更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qq616491978/9900582

一、工具使用说明

        1.右键打开小工具,选择使用ie浏览器核心的浏览器打开(打开后允许ActiveX控件执行)

Center

        2.这时小工具弹窗提示需要导入题库,点击【确定】后选择题库excel文件,然后点击导入。

Center

        3.这时浏览器会弹出一个警告,选择【是】,继续允许ActiveX控件执行。

Center

        4.然后等待程序读取excel,一般需要3到5秒,提示导入题库成功后,就可以直接做题了。

Center

        5.做完题后,左边统计页面会提示答案对错,对为绿色,错为红色,按提交可查看做题情况。

Center

二、界面设计

        小工具完全使用HTML+CSS+JavaScript代码编写,界面部分只用到了简单的浏览器控件,以便提高运行的兼容性,界面的HTML+CSS代码如下:

</head>
		<body onload="init()">
			<div id='title' style="position:absolute;left:0px;top:0px;width:100%;height:50px;color:white;background:#3399FF;text-align:center">
				<div style="float:right;font-size:18px"><button onclick="showInfo()">关于工具</button></div>
				<div style="float:left;font-size: 24px"> <input type="checkbox" onclick="showDaan()" style="width:20px;height:20px">显示参考答案</div>
				</div>
				<div id='choosepanel' style="position:absolute;top:50px;left:0px;width:65%;height:90%;background:white;font-size:24px;font-weight: bold;color:#000077;font-family:'Arial','Microsoft YaHei','黑体','宋体';">

					<div id='xuhao'>序号</div>
					<div id='leixing' style="color:red">题目类型</div>
					<div id='tigan' style="border:solid;border-radius:5px;">题干</div>
					<br>

			<div><input id='radioA' type="checkbox" name='a' value='A' style="width:30px;height:30px"><label id='A'>A</label></div>
			<div><input id='radioB' type="checkbox" name='a' value='B' style="width:30px;height:30px"><label id='B'>B</label></div>
			<div><input id='radioC' type="checkbox" name='a' value='C' style="width:30px;height:30px"><label id='C'>C</label></div>
			<div><input id='radioD' type="checkbox" name='a' value='D' style="width:30px;height:30px"><label id='D'>D</label></div>

			<div id='daan' style="color:red">参考答案</div>
			<br>
			<div id='beizhu'>备注</div>
			<button onclick='chooseAnswer()' style="float:right;font-size: 24px;" >确认</button>

		</div>
		<div id='numberpanel' style="position:absolute;top:50px;right:0px;width:34%;height:90%;border-left:thick double #3399FF;font-family:'Arial','Microsoft YaHei','黑体','宋体';">
		</div>

		<div id='submitpanel' style="position:absolute;bottom:0px;left:0px;width:100%;height:10%;color:white;font-size:20px;background:#3399FF">
			<button id='submit' style="float:right;font-size:24px;" onclick='submit()'>提交答卷</button>
			<button style="float:right;font-size: 24px;" onclick="load(2)">重新做题</button>
			<input style="float:left;font-size: 24px;" type="file" id="upfile" />
			<button style="float:left;font-size: 24px;" onclick="ReadExcel(1)">导入题库</button>
		</div>
		<div id='info' style="position:absolute;width: 300px;height: 80px;background-color: #3399FF;top:50%;left:50%;margin-left:-150px;margin-top:-100px;display: none;">
		<button style="position:absolute;width:50px;top:0px;right:0px;" onclick="closeInfo()" >关闭</button><a style="color: white;text-align: center; position:absolute;width: 200px;height: 20px;top:50%;left:50%;margin-left:-100px;bottom: 0px;">http://blog.csdn.net/qq616491978</a></div>

	</body>

	</html>

三、逻辑控制代码

        为了使用方便全部JavaScript代码写在了一个文件中,这样只需使用浏览器打开html文件即可运行,JavaScript代码中使用了ieAX控件读取excel,所以只能在ie浏览器内核中使用,主要代码如下:

<script type="text/javascript">

	var tiku = [];
	var tiku_number = 0;
	var tiku_url = "";
	var userchooseNumber = 1;
	var fenshu = new Array();
	var ifanswer = new Array();
	var answers = new Array();
    var ifshow = false;
	
	function init() {
	
		if (isIE()) {
			if (tiku_url != "" && tiku_url != null) {
				ReadExcel(2);
				load();
			}
			else{
				alert("还没导入题库,请导入题库。");
			}
		} else {
			document.getElementsByTagName("body")[0].style.display = "none";
			alert("该程序只能在IE内核浏览器运行,请使用IE内核的浏览器打开,如果是QQ、360、百度等双核浏览器请设置为IE兼容模式");
		}
	}

	function load() {

	    ifshow = false;
		//清空数字面板数据
		var numberpanel = document.getElementById("numberpanel");
		var childs = numberpanel.childNodes;
		for (var i = childs.length - 1; i >= 0; i--) {
			numberpanel.removeChild(childs[i]);
		}

		var rows = tiku_number;
		for (i = 0; i < rows; i++) {
			fenshu[i] = 0;
			ifanswer[i] = 0;
			answers[i] = 'kong';
		}

		for (i = 1; i <= rows; i++) {
			var createDiv = document.createElement("div");
			createDiv.id = i;
			createDiv.className = "numberdiv";
			createDiv.innerHTML = i;
			document.getElementById("numberpanel").appendChild(createDiv);
		}

		var numberpanel = document.getElementById("numberpanel");
		var divs = numberpanel.getElementsByTagName("div");

		for (var i = 0; i < divs.length; i++) {
			divs[i].onclick = function (event) {
			    var eve=event || window.event;
				var target =eve.target || eve.srcElement; 
				userchooseNumber = target.id;
				//alert(target.id);
				chooseNumber(target.id);
				
			}
		}

		chooseNumber(1);
		showDaan();

	}

	function chooseNumber(id) {
	
		var type = tiku[id - 1].leixing;
		var answer = answers[id - 1];

		updateNumberUI(id);
		updateAnswerUI(answer);
		document.getElementById("xuhao").innerHTML = '题目:' + id;
		document.getElementById("leixing").innerHTML = tiku[id - 1].leixing;
		document.getElementById("tigan").innerHTML = tiku[id - 1].tigan;
		document.getElementById("A").innerHTML = 'A.' + tiku[id - 1].A;
		document.getElementById("B").innerHTML = 'B.' + tiku[id - 1].B;
		document.getElementById("C").innerHTML = 'C.' + tiku[id - 1].C;
		document.getElementById("D").innerHTML = 'D.' + tiku[id - 1].D;
		document.getElementById("daan").innerHTML = '参考答案:' + tiku[id - 1].daan;
		document.getElementById("beizhu").innerHTML = '备注:' + tiku[id - 1].beizhu;

	}

	function chooseAnswer() {
		var A = '';
		var B = '';
		var C = '';
		var D = '';
		var valueA = document.getElementById("radioA").checked;
		var valueB = document.getElementById("radioB").checked;
		var valueC = document.getElementById("radioC").checked;
		var valueD = document.getElementById("radioD").checked;
		if (valueA === true) {
			A = 'A';
		}
		if (valueB === true) {
			B = 'B';
		}
		if (valueC === true) {
			C = 'C';
		}
		if (valueD === true) {
			D = 'D';
		}

		var userchooseAnswer = A + B + C + D;
		var daan = tiku[userchooseNumber - 1].daan;
		var x = userchooseAnswer.toLowerCase();
		var y = daan.toLowerCase();
		answers[userchooseNumber - 1] = userchooseAnswer;
		if (x === y) {
			alert('回答正确');
			fenshu[userchooseNumber - 1] = 1;
			ifanswer[userchooseNumber - 1] = 1;
		} else {
			alert('回答错误');
			fenshu[userchooseNumber - 1] = 0;
			ifanswer[userchooseNumber - 1] = 1;
		}
	}

	function submit() {
		var x = 0,
		y = 0;
		for (var i = 0; i < tiku_number; i++) {
			x = x + fenshu[i];
			y = y + ifanswer[i];
		}

		alert('正确题数:' + x + '\n错误题数:' + (y - x) + '\n未作答:' + (tiku_number - y) );
	}
	
	function showDaan() {
		if (ifshow == false) {
			document.getElementById("daan").style.display = "none";
			ifshow = true;
		} else {
			document.getElementById("daan").style.display = "";
			ifshow = false;
		}
	}

	function updateNumberUI(id) {
		var numberpanel = document.getElementById("numberpanel");
		var divs = numberpanel.getElementsByTagName("div");
		for (var i = 0; i < divs.length; i++) {
			divs[i].style.background = '#F0F8FF';
			if (ifanswer[i] === 1) {
				if (fenshu[i] === 1) {
					divs[i].style.background = '#00FF00';
				} else {
					divs[i].style.background = 'red';
				}
			}

		}
		document.getElementById(id).style.background = 'yellow';
		var answer = answers[id - 1];

	}

	function updateAnswerUI(userchooseAnswer) {
		var choosepanel = document.getElementById("choosepanel");
		var inputs = choosepanel.getElementsByTagName("input");
		if (userchooseAnswer !== "kong") {
			for (var i = 0; i < inputs.length; i++) {
				inputs[i].checked = false;
			}

			for (var i = 0; i < userchooseAnswer.length; i++) {

				if (userchooseAnswer.charAt(i) === 'A') {
					document.getElementById("radioA").checked = true;
				}
				if (userchooseAnswer.charAt(i) === 'B') {
					document.getElementById("radioB").checked = true;
				}
				if (userchooseAnswer.charAt(i) === 'C') {
					document.getElementById("radioC").checked = true;
				}
				if (userchooseAnswer.charAt(i) === 'D') {
					document.getElementById("radioD").checked = true;
				}
			}
			for (var i = 0; i < inputs.length; i++) {
				inputs[i].style.color = 'white';
			}
		} else {
			for (var i = 0; i < inputs.length; i++) {
				inputs[i].checked = false;
			}
		}

	}

	function ReadExcel(type) {

		if (type == 1) {
			var tempStr = "";
			//得到文件路径的值
			var filePath = document.getElementById("upfile").value;
			if(filePath!=""){
			//创建操作EXCEL应用程序的实例
			try{
			var oXL = new ActiveXObject("Excel.application");
			}
			catch(e){
			  location.reload();
			}
			//打开指定路径的excel文件
			var oWB = oXL.Workbooks.open(filePath);
			//操作第一个sheet(从一开始,而非零)
			oWB.worksheets(1).select();
			var oSheet = oWB.ActiveSheet;
			//使用的行数
			var rows = oSheet.usedrange.rows.count;
			tiku_number = rows - 1;
			tiku_url = filePath;
			try {
				for (var i = 2; i <= rows; i++) {
					//var a = oSheet.Cells(i, 2).value.toString() == "undefined" ? "": oSheet.Cells(i, 2).value;
					tiku[i - 2] = new Object();
					tiku[i - 2].xuhao = oSheet.Cells(i, 1).value;
					tiku[i - 2].leixing = oSheet.Cells(i, 2).value;
					tiku[i - 2].tigan = oSheet.Cells(i, 3).value;
					tiku[i - 2].A = oSheet.Cells(i, 4).value;
					tiku[i - 2].B = oSheet.Cells(i, 5).value;
					tiku[i - 2].C = oSheet.Cells(i, 6).value;
					tiku[i - 2].D = oSheet.Cells(i, 7).value;
					tiku[i - 2].daan = oSheet.Cells(i, 8).value;
					tiku[i - 2].beizhu = oSheet.Cells(i, 9).value;
				}
			} catch (e) {
				//document.getElementById("txtArea").value = "导入失败";
			}
			num = rows - 1;
			alert("成功导入" + num + "道题");
			//退出操作excel的实例对象
			oXL.Application.Quit();
			//手动调用垃圾收集器
			CollectGarbage();
			load();
			}
			else{
				alert("未选择导入文件,请选择后点击导入。");
			}
		} else if (type == 2) {

			var tempStr = "";
			//得到文件路径的值
			var filePath = tiku_url;
			//创建操作EXCEL应用程序的实例
			var oXL = new ActiveXObject("Excel.application");
			//打开指定路径的excel文件
			var oWB = oXL.Workbooks.open(filePath);
			//操作第一个sheet(从一开始,而非零)
			oWB.worksheets(1).select();
			var oSheet = oWB.ActiveSheet;
			//使用的行数
			var rows = oSheet.usedrange.rows.count;
			tiku_number = rows - 1;
			try {
				for (var i = 2; i <= rows; i++) {
					//var a = oSheet.Cells(i, 2).value.toString() == "undefined" ? "": oSheet.Cells(i, 2).value;
					tiku[i - 2] = new Object();
					tiku[i - 2].xuhao = oSheet.Cells(i, 1).value;
					tiku[i - 2].leixing = oSheet.Cells(i, 2).value;
					tiku[i - 2].tigan = oSheet.Cells(i, 3).value;
					tiku[i - 2].A = oSheet.Cells(i, 4).value;
					tiku[i - 2].B = oSheet.Cells(i, 5).value;
					tiku[i - 2].C = oSheet.Cells(i, 6).value;
					tiku[i - 2].D = oSheet.Cells(i, 7).value;
					tiku[i - 2].daan = oSheet.Cells(i, 8).value;
					tiku[i - 2].beizhu = oSheet.Cells(i, 9).value;
				}
			} catch (e) {
				//document.getElementById("txtArea").value = "导入失败";
			}
			//document.getElementById("txtArea").value = "导入成功";
			num = rows - 1;
			alert("成功导入" + num + "道题");
			//退出操作excel的实例对象
			oXL.Application.Quit();
			//手动调用垃圾收集器
			CollectGarbage();
		}
	}

	function closeInfo() {
		document.getElementById("info").style.display = "none";
	}

	function showInfo() {
		document.getElementById("info").style.display = "block";
	}

	function isIE() { //ie?
		if (!!window.ActiveXObject || "ActiveXObject" in window)
			return true;
		else
			return false;
	}
</script>

  点击这里下载源代码↓↓↓

基于JS的导入EXCEL题库复习小工具_intitle:javascript搜题-Javascript文档类资源-CSDN下载

猜你喜欢

转载自blog.csdn.net/qq616491978/article/details/75208177