Modal模态框+Ajax+PHPExcel 带进度条上传Excel至mysql

研究了很久怎么在模态框中上传Excel,并且显示进度条,最后还是采用迂回战术。。利用iframe…测试在chorme可以运行。。

1index.html

Modal模态框+Ajax+PHPExcel 带进度条上传Excel至mysql

<section class="content"> <div class="container-fluid"> <div class="card"> <!--<div class="card-header">--> <div class="card-body"> <div class="row"> <div class="col-md-12"> <div id="toolbar"> <form class="form-inline"> <div class="form-group"> <div class="input-group input-group-sm" id="query_items"> <div class="input-group-prepend"> <span class="input-group-text">Month</span> <span class="input-group-text"> <i class="far fa-calendar-alt"></i></span> </div> <input type="text" class="form-control" id="mth_choose" size="25" /> </div> <div class="input-group input-group-sm p-1" id="slic_q"> <div class="input-group-prepend"> <span class="input-group-text">SLIC</span> </div> <div class="input-group-prepend"> <select id="q_slic" class="form-control"> </select> </div> </div> <div class="input-group input-group-sm mr-2" id="btn_q"> <span class="input-group-append"> <button type="button" class="btn btn-info btn-flat btn-sm" id="query_base"> <i class="fas fa-search"></i></button> </span> </div> <div class="btn-group btn-group-sm p-1" id="btn_grp"> <button id="u_wgt" class="btn btn-success btn-sm mr-2" data-toggle="modal" data-target="#upload_wgt" type="button" disabled><i class="fas fa-upload"></i>Weight</button> <button id="u_inf" class="btn btn-info btn-sm mr-2" data-remote="child_page/test.php" data-toggle="modal" data-target="#upload_info" type="button"><i class="fas fa-upload"></i>Basic Info</button> <button id="d_exp" class="btn btn-primary btn-sm mr-2" data-toggle="modal" data-target="#dowload_exp"><i class="fas fa-download"></i>Export</button> </div> </div> </form> </div> </div><!-- /.toolbar --> </div> <!-- /.row --> <!--</div> /.card header --> <!-- <div class="card-body"> --> <div class="row"> <div class="col-md-12"> <table id="incentive_table" class="table table-bordered table-striped table-sm"></table> </div> </div> </div><!-- /.card body --> </div><!-- /.card --> </div><!-- /.container-fluid --></section>

2点击Weight按钮后弹出模态框

Modal模态框+Ajax+PHPExcel 带进度条上传Excel至mysql

<!--weight upload Modal--><div class="modal fade" id="upload_wgt" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-backdrop="static"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title" id="myModalLabel">Upload Weight</h4> <button type="button btn-sm" class="close" data-dismiss="modal" aria-hidden="true"> × </button> </div> <div class="modal-body"> <span id="message"></span> <form id="frm_upload_wgt" method="POST" enctype="multipart/form-data" class="form-horizontal"> <div class="form-group" align="center"> <label class="col-md-4 control-label">Select Upload File</label> <input type="file" name="file" id="file" /> </div> <div id='load_frm' class="form-group"> <iframe id="wgt_load_frm" src="" width="100" height="50" frameborder='no' scrolling="no"></iframe> </div> <div class="form-group" align="center"> <input type="hidden" name="hidden_field" value="1" /> <button type="submit" class="btn btn-info" id="wgt_import" disabled> <i class="fa fa-upload p-1"></i> Upload </button> <button type="button" class="btn btn-danger" id="close_list" data-dismiss="modal"> <i class="fa fa-times p-1"></i> Close </button> </div> </form> <span id="message"></span> </div> </div> </div></div><!--weight upload Modal end-->

3选择文件后点击上传,然后在iframe中显示进度条

Modal模态框+Ajax+PHPExcel 带进度条上传Excel至mysql

3.1 index.html中的Jquery

$("#u_wgt").on("click", function () { $("#frm_upload_wgt")[0].reset(); document.getElementById("wgt_load_frm").src = ""; $("#wgt_import").removeAttr("disabled", "true"); $('#frm_upload_wgt').on('submit', function (event) { $('#message').html(''); event.preventDefault(); $.ajax({ url: "child_page/upload_files/upload_excel_file.php", method: "POST", data: new FormData(this), dataType: "json", contentType: false, cache: false, processData: false, beforeSend: function () { var file = document.getElementById('file').files[0]; var fileName = file.name; if (fileName.endsWith("xlsx")) { $("#wgt_import").attr("disabled", "true"); } else { modal_js.fail({ 'msg': 'Just Accept .xlsx file', 'icon': 2 }); $('#file').val(''); return false; } }, success: function (data) { if (data.success) { var file_name = data.file_name; var main = document.getElementById("load_frm"); var iframe = document.getElementById("wgt_load_frm"); var width = main.offsetWidth; var height = main.offsetHeight; iframe.style.width = width "px"; iframe.style.height = (height - 100) "px"; document.getElementById("wgt_load_frm").src = "child_page/upload_files/upload_pu_weight.php?file=" file_name; } if (data.error) { $('#message').html('<div class="alert alert-danger">' data.error '</div>'); $("#wgt_import").removeAttr("disabled", "true"); } } }) }); });

3.2 upload_excel_file.php

<?php$file = $_FILES['file']['name'];$filetempname = $_FILES['file']['tmp_name'];$filePath = '../../upFile/';require_once('../../plugins/PHPExcel/PHPExcel.php');require_once('../../plugins/PHPExcel/PHPExcel/IOFactory.php');require_once('../../plugins/PHPExcel/PHPExcel/Reader/Excel2007.php');//require_once ('../PHPExcel/PHPExcel/Reader/CSV.php');$filename = explode(".", $file); //把上传的文件名以“.”好为准做一个数组。$time = date("y-m-d-H-i-s"); //去当前上传的时间$filename[0] = $time; //取文件名t替换$name = implode(".", $filename); //上传后的文件名$uploadfile = $filePath . $name; //上传后的文件名地址$result = move_uploaded_file($filetempname, $uploadfile); //假如上传到当前目录下if ($result) //如果上传文件成功,就执行导入 excel操作{ $output = array( 'success' => true, 'file_name' => $uploadfile ); echo json_encode($output);}

3.3 upload_pu_weight.php

<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta http-equiv="x-ua-compatible" content="ie=edge" /> <title>Upload</title></head><body> <div id="progress" class="inline" style="width:700px;border:1px solid #ccc;"></div> <div id="information" class="inline"></span></body></html><?phpset_time_limit(0);require_once("../../connections/ie_mysql_li_db.php");$sqls = new Mysqldb();if (isset($_GET['file'])) { //下面的路径按照你PHPExcel的路径来修改 require_once('../../plugins/PHPExcel/PHPExcel.php'); require_once('../../plugins/PHPExcel/PHPExcel/IOFactory.php'); require_once('../../plugins/PHPExcel/PHPExcel/Reader/Excel2007.php'); //require_once ('../PHPExcel/PHPExcel/Reader/CSV.php'); $uploadfile = $_GET['file']; $str = ""; // $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2003 $objReader = PHPExcel_IOFactory::createReader('Excel2007'); //use excel2003 和 2007 format //$objReader = PHPExcel_IOFactory::createReader('CSV');//use CSV $objPHPExcel = PHPExcel_IOFactory::load($uploadfile); $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); // 取得总行数 $rownum = $highestRow - 1; $highestColumn = $sheet->getHighestColumn(); // 取得总列数 for ($j = 2; $j <= $highestRow; $j ) { $percent = intval($j / $highestRow * 100) . "%"; echo '<script language="javascript"> document.getElementById("progress").innerHTML="<div style="width:' . $percent . ';background-image:url(../../img/pbar-ani.gif);"> </div>"; document.getElementById("information").innerHTML="' . $percent . ' - ' . $j . ' in TTL ' . $highestRow . ' processed."; </script>'; echo str_repeat(' ', 1024 * 8); flush(); sleep(0.8); for ($k = 'A'; $k <= $highestColumn; $k ) { $str .= iconv('utf-8', 'gbk', $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue()) . '||'; //读 取单元格 } $strs = explode("||", $str); $w_slic = $strs[0]; $w_trk = $strs[1]; $w_billing_weight = $strs[2]; $w_update = date('Y-m-d'); $sql = "replace into tbl_pu_weight( w_slic, w_trk, w_billing_weight, w_update ) values ( '" . $w_slic . "', '" . $w_trk . "', '" . $w_billing_weight . "', '" . $w_update . "' )"; $sqls->simple_query($sql); $str = ""; } unlink($uploadfile); //删除上传的excel文件 echo '<script language="javascript"> document.getElementById("information").innerHTML="Upload Successful!"; </script>';}else { echo '<script language="javascript"> document.getElementById("information").innerHTML="Upload Faile!"; </script>';}?>

3.4 进度条图片。。pbar-ani.gif

Modal模态框+Ajax+PHPExcel 带进度条上传Excel至mysql

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年11月12日 上午10:49
下一篇 2022年11月12日 上午11:03

相关推荐

  • 标题:《此生未完成》-于娟,32岁,海归博士,死于癌症(于娟的书《此生未完成》图片)

    前两天,看了一本书,无意中看到了一个读者的留言—— 小时候经常躺在床上想:如果我以后死了怎么办,我死了会去哪里,我是不是会看不到爸爸妈妈了……想着想着就哭了。 然后我在他下面留言:…

    科研百科 2024年4月8日
    86
  • 多项目管理进度excel

    多项目管理已经成为现代企业管理者不可或缺的工具之一。通过使用多项目管理进度excel,企业可以更好地协调和管理多个项目,提高项目效率,减少成本,并确保项目的成功交付。本文将介绍多项…

    科研百科 2024年8月17日
    23
  • 系统集成项目管理怎么报名

    系统集成项目管理工程师(SIP工程师)是一种非常重要的职业,主要负责管理和维护计算机系统。如果你想成为一名SIP工程师,需要进行以下步骤: 1. 了解SIP工程师的工作职责和资格要…

    科研百科 2024年5月24日
    94
  • 企业科研项目经费管理办法

    企业科研项目经费管理办法 随着科技的不断发展,企业科研项目越来越受到重视。为了规范企业的科研项目经费管理,本文提出了一种企业科研项目经费管理办法。 一、经费预算 企业科研项目经费预…

    科研百科 2024年8月16日
    35
  • 科研项目 成效指标怎么写

    科研项目的成效指标怎么写 科研项目的成效指标是衡量项目成果的重要指标,可以帮助项目团队了解项目的进展情况,评估项目的效果,并为未来决策提供依据。在撰写成效指标时,需要根据项目的特点…

    科研百科 2024年12月8日
    1
  • 煤矿系统项目管理规范

    煤矿系统项目管理规范 在煤矿生产管理中,煤矿系统项目管理是非常重要的环节。通过制定合理的项目管理规范,可以有效地提高项目管理的效率和质量,确保煤矿系统的顺利运行。本文将介绍煤矿系统…

    科研百科 2024年12月18日
    0
  • 科研项目来源分为两类怎么写科研项目来源分为两类怎么写

    科研项目来源通常分为两大类:开源项目和私有项目。开源项目是指由其他开发者或组织创建和维护的代码库或软件项目,这些项目可以在任何时间和地点进行访问和修改。私有项目则是指由特定组织或个…

    科研百科 2024年7月4日
    47
  • 经营活动营运资金结构分析

    经营活动营运资金结构分析 经营活动是公司正常运营的重要基础,而营运资金则是支持公司日常经营的关键。因此,对经营活动营运资金结构进行分析,可以帮助公司更好地管理资金,提高资金使用效率…

    科研百科 2024年10月22日
    0
  • 项目管理认证考试报考条件(项目管理认证)

    项目管理认证项目管理认证项目专用项目提提益处专业解决青少年儿童专用项目随着电子竞技相关技术的普及,运动健身体适能成为培养青少年青少年健身、专注力、运动协调力的必备品,更加助您远离网…

    科研百科 2024年7月31日
    50
  • 小微工程建设项目管理

    小微工程建设项目管理 小微工程建设项目管理是项目管理中的一个重要领域,涉及到许多不同的方面,包括项目规划、执行、监控和收尾等。在这个领域中,项目管理者需要面对许多挑战,如人员不足、…

    科研百科 2025年1月7日
    0