工具界面展示

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

基于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控件执行)

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

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

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

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

二、界面设计

小工具完全使用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;elsereturn false;}
</script>

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

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

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

  1. 静态HTML网页设计作品——仿2018淘宝首页(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码

    HTML5期末大作业 文章目录 HTML5期末大作业 一.作品展示 二.文件目录 三.代码实现 四.学习资料 五.完整源码 一.作品展示 二.文件目录 三.代码实现 <!DOCTYPE html ...

  2. HTML5期末大作业:网上花店网站设计——简约的网上花店网站设计(4页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码

    HTML5期末大作业:网上花店网站设计--简约的网上花店网站设计(4页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网 ...

  3. JavaScript实现动态规划方法计算特定位置的斐波那契数fibonacciNth算法(附完整源码)

    JavaScript实现动态规划方法计算特定位置的斐波那契数fibonacciNth算法(附完整源码) fibonacciNth.js完整源代码 fibonacciNth.js完整源代码 export ...

  4. HTML5期末大作业:影视在线网站设计——电影网H5(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码

    HTML5期末大作业:影视在线网站设计--电影网H5(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题 ...

  5. HTML5期末大作业:电影票务网站设计——电影票务网站整套(24页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码

    HTML5期末大作业:电影票务网站设计--电影票务网站整套(24页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设 ...

  6. HTML5期末大作业:电影网站设计——我的电影(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码

    HTML5期末大作业:电影网站设计--我的电影(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 一.作品介绍 1.作品简 ...

  7. HTML5期末大作业:电影网站设计——电影(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码

    HTML5期末大作业:电影网站设计--电影(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 一.作品介绍 1.作品简介 ...

  8. HTML+CSS静态——绿色的餐饮美食网站(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码

    HTML5期末大作业:餐饮美食网站设计--绿色的餐饮美食网站(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设 ...

  9. HTML5期末大作业:餐饮美食网站设计——绿色的餐饮美食网站(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码

    HTML5期末大作业:餐饮美食网站设计--绿色的餐饮美食网站(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设 ...

最新文章

  1. 客户端发送消息时,源码运行的大致流程
  2. GCD LCM UVA - 11388 (思维。。水题)
  3. react-native-Cocoapods-Swift-Project
  4. 再见了,余!额!宝!!!
  5. 一个常见问题的解决——Ext grid的宽度高度如何自适应
  6. DataTable.ImportRow()与DataTable.Rows.Add()的区别
  7. document.body.scrollTop值为0的解决方法[转]
  8. java 图片水印旋转,Java实现 图片水印或者文字水印详解
  9. 《R in Action》读书笔记(2)
  10. Hermite多项式正交性证明
  11. UBUNTU-16.04.07和PREEMPT_RT日志
  12. CSAPP Lab2 实验记录 ---- Bomb Lab(Phase 1 - Phase 6详细解答 + Secret Phase彩蛋解析)
  13. 关于开机USB电涌15秒关机的另类解决方法
  14. c语言编写步进电机步数程序6,单片机步进电机程序问题
  15. Google Android 原生Rom 下载地址及刷机教程--Factory Images for Nexus and Pixel Devices
  16. Spring @InitBinder注解
  17. 制作一幅扑克牌系列三---动起来
  18. 华为服务器gpu卡型号,GPU运算服务器推荐
  19. 过程计算机系统 pcs,炼钢AOD炉过程计算机系统设计与实现-软件工程专业毕业论文.docx...
  20. centOS 8 重启网络服务 / 重启网卡

热门文章

  1. android 测试屏幕触点,如何检测Android Studio中的后台服务是否触摸了屏幕?
  2. Nginx之父被抓,在职期间写的nginx竟属于公司?
  3. 博士40万+,硕士13万+,本科生6万+!杭州又一个区发大招引人
  4. 教育项目--项目简介【0】
  5. 绝地求生测试服画质优化软件,绝地求生Reshade安装教程-PUBG画质优化插件使用教程...
  6. 如何实现 请在微信客户端打开链接
  7. 分享我的电子藏书:C系列
  8. SQL截取字符串中的某个特定位置部分
  9. 一在线计算机系统 有4条输入通信,2012年9月计算机等考《一级MS Office》全真模拟试卷(4)...
  10. 上班带薪打游戏?二次元的福音 在哔哩哔哩做测试员是一种什么体验?