JS批量导入/读取excel、下载模板文件功能实现

事先准备:

第1步:先导入excel处理的插件,网上下载。

<script type="text/javascript" src="../js/xlsx.core.min.js"></script>
<script type="text/javascript" src="js/xlsx.full.min.js"></script>

第2步:先建个execel模板,导入到项目文件中。例如:

最后我们可以编写代码了:

先上HTML吧,这样好理解js的内容,不然都不止DOM是干嘛的

<!-- 导入按钮 -->
          <div id="label-import" class="label-import" >
              <span style="color: #FFFFFF;margin-left: 10px;">批量导入</span>
             <!-- 顶部 -->
             <div id="import_dingbu">

                <a href = "javascript:void(0)" onclick = "closeImport()" id="import_dingbu_close"><img src="img/03_part/tk_button_close_press.png" style=""></a>

             </div> <!-- dialog_dingbu -->

              <!-- 中部 -->
             <div id="import_zhongbu">
                  <div id="import_buju">
                    <input type="file" name="file" id="fileid" value="" accept=".xlsx,.xls,.csv"  onclick="filechoose()" /> <!-- onclick="filechoose()" -->
                    <input type="button" id="daoru" value="导入" onclick="fileimport()"/></br>
                    <a herf="#" download="moban.xlsx"  id="moban" class="downloadBtn" onclick="downloadmoban()">下载模板</a>
                      <!-- <button class="downloadBtn" type="button" onclick="downloadImg()" id="moban">下载模板</button> -->
                 </div>

                   <p style="float: right;margin-right: 50px;margin-top: 40px;" >
                     <b>注意:</b>
                         <span >1)必须根据模板格式录入,否则导入失败</br></span>
                         <span style="float: right;margin-right: 70px;">2)不支持IE等部分浏览器下载</span>
                   </p>

             </div> <!-- dialog_zhongbu -->

          </div> <!-- label-dialog -->

最后js代码:

    var biaogesj = new Array(), biaogename = new Array(),biaogeImei= new Array(),biaogeZWnumeber= new Array();
    const result = [];
    /* 读取上传的表格*/
    //首先监听input框的变动,选中一个新的文件会触发change事件
     document.querySelector("#fileid").addEventListener("change", function () {
       //获取到选中的文件
       var file = document.querySelector("#fileid").files[0];
       var type = file.name.split('.');
       if (type[type.length - 1] !== 'xlsx' && type[type.length - 1] !== 'xls') {
         alert('只能选择excel文件导入');
         return false;
       }
       const reader = new FileReader();
       reader.readAsBinaryString(file);
       reader.onload = (e) => {
         const data = e.target.result;
         const zzexcel = window.XLS.read(data, {
           type: 'binary'
         });

         for (let i = 0; i < zzexcel.SheetNames.length; i++) {
           const newData = window.XLS.utils.sheet_to_json(zzexcel.Sheets[zzexcel.SheetNames[i]]);
           result.push(...newData)
         }
         biaogesj=result;
         console.log('result', result)
       }

     });
     // 导入文件按钮(读取导入的内容)
     function fileimport(){
       console.log('表格的数据', JSON.stringify(biaogesj));
       for(var i=0;i<biaogesj.length;i++){//获取表格内容
          biaogename.push(biaogesj[i].终端型号);
          biaogeImei.push(biaogesj[i].IMEI);
          biaogeZWnumeber.push(biaogesj[i].专网卡号);
       }
       //----准备数据发送 --excel表格密码:123456  [{"model":biaogename,"imei":biaogeImei,"empid":"","number":biaogeZWnumeber,"groupid":-1}];
          let groupInfo= biaogesj
          senddele1=JSON.stringify(groupInfo);
          console.log("批量导入新增终端:"+senddele1); //新增的组,传给后台
          window.sendnewphone(senddele1);
       //接收·······························
          // window.selectionFunc(newaddgropid,checked);//调用选中改组,在查询下数据库

          ws.onmessage = function (evt) { //接收后台是否新增成功
             // console.log("收到组终端(还没转):" + evt.data);
             var groupobj2 = JSON.parse(evt.data);//转对象
             console.log("是否下发成功1:" + groupobj2.respData);
             // var groupoo2 = JSON.parse(groupobj2.respData); //转对象,用这个报错
             // var grouprr = groupoo.respData;
            // console.log("选择群组返回来的组信息:"+ typeof groupoo +groupoo[0].imei);
            // console.log("是否下发成功2:" + groupoo2);

             // 等待后台确认后,否则更新失败
             if(groupobj2.respData=="操作成功"){
                window.receiveRequest();//调用选中改组,接收数据库内容展示出来
             }else{
               alert("可能是网络或服务器原因,更新失败,请重新选择或者刷新页面");
             }
          };

          window.closeImport();
     }

     /* 批量导入功能*/
     function openImport(){
         document.getElementById('label-import').style.display='block';
         // document.getElementById('fade').style.display='block'

     }
     function closeImport(){
         document.getElementById('label-import').style.display='none';
         // document.getElementById('fade').style.display='none'
     }

     //下载模板
      var loaded = false;
      $("#moban").click(function () {
          if (!loaded) {
              $("<iframe id='downloadExcel' src='' width='0' height='0' frameborder='0'/>").appendTo("body");
              loaded = true;
          }
          $("#downloadExcel").attr("src", "${ctx}../../static/file/moban.xlsx?t=" + new Date().getTime());
      });

      //选择的文件判断
      function filechoose(fileid) {

     }
     //监听选择文件
      $(document).ready(function(){
       $("#fileid").change(function(evt){
         var objFile = document.getElementById('fileid').files[0];//获取文件内容对象
         var objStr = /\.(xlsx|xls|csv)$/; //文件类型正则验证
         if(!objStr.test(objFile.name)){
           alert("选择的文件格式不对,请选对excel表格");
           return false;
         }

       });
      });

如上所示:js下载功能:

 //下载模板
      var loaded = false;
      $("#moban").click(function () {
          if (!loaded) {
              $("<iframe id='downloadExcel' src='' width='0' height='0' frameborder='0'/>").appendTo("body");
              loaded = true;
          }
          $("#downloadExcel").attr("src", "${ctx}../../static/file/moban.xlsx?t=" + new Date().getTime());
      });

如果代码很乱,实在看不懂,建议复制到自己的编译器中运行下,然后执行下看看步骤就知道了。很简单的。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试狂人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值