zoukankan      html  css  js  c++  java
  • PHP Excel文件导入数据到数据库

    1.php部分(本例thinkphp5.1):

      下载PHPExcel了扩展http://phpexcel.codeplex.com/

    <?php
    namespace appadmincontroller;

    // 引入phpExcel
    use Env;
    use vendorPHPExcelPHPExcel;

    class Upload
    {
    //上传Excel 导入数据
    public function import(){
    include_once(Env::get('root_path').'vendor/PHPExcel/PHPExcel.php');
    // $objPHPExcel = new PHPExcel();
    $file = request()->file('file');
    $info = $file->validate(['size'=>52428800])->move( '../public/uploads');
    if($info){
    $ext = $info->getExtension(); //获取文件后缀名
    if(!in_array($ext,['xlsx','xls'])){
    $msg=['code'=>-1,'msg'=>"文件格式有误"];
    }else{
    $path = $_SERVER['DOCUMENT_ROOT'].'/uploads/'.str_replace('\', '/', $info->getSaveName()); //上传文件路径
    if (!file_exists($path)) {
    $msg['res'] = -1;
    $msg['msg'] = "上传文件丢失!" . $file->getError();
    }

    if ($ext == 'xlsx') {
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    $objPHPExcel = $objReader->load($path, 'utf-8');
    } elseif ($ext == 'xls') {
    $objReader = PHPExcel_IOFactory::createReader('Excel5');
    $objPHPExcel = $objReader->load($path, 'utf-8');
    }

    $sheet = $objPHPExcel->getSheet(0);
    $highestRow = $sheet->getHighestRow(); // 取得总行数
    // $highestColumn = $sheet->getHighestColumn(); // 取得总列数
    $i = 0;
    $importRows = 0;
    $addData = [];
    for ($j = 2; $j <= $highestRow; $j++) {
    $importRows++;
    $realName = (string)$objPHPExcel->getActiveSheet()->getCell("A$j")->getValue();//需要导入的realName
    $phone = (string)$objPHPExcel->getActiveSheet()->getCell("B$j")->getValue(); //需要导入的phone
    $company = (string)$objPHPExcel->getActiveSheet()->getCell("C$j")->getValue(); //需要导入的company
    $job = (string)$objPHPExcel->getActiveSheet()->getCell("D$j")->getValue(); //需要导入的job
    $email = (string)$objPHPExcel->getActiveSheet()->getCell("E$j")->getValue(); //需要导入的email

    $addData[] = ['name'=>$realName,'tel'=>$phone,'company'=>$company,'job'=>$job,'email'=>$email];
    $i++;
    }
    halt($addData); //打印数据
    //数据写入数据库
    $result = model('')->insertAll($addData);
    if($result){
    $msg = ['code'=>0,'msg'=>'导入数据成功!'];
    }else{
    $msg = ['code'=>-1,'msg'=>'导入失败,请重试!'];
    }
    }
    }
    return $msg;
    }
    }
     配置路由:
    'import'=>'admin/Upload/import',  
    2.前端部分:layui传文件
    <a class="layui-btn layui-btn-primary import_btn" data-type="import">导入数据</a>   //点击开始上传文件操作
    layui.use(['upload'],function(){
      var upload = layui.upload;
      upload.render({
        elem:'.import_btn',
        url:"{:url('admin/import')}",
        accept:'file', //普通文件
        exts:'xls', //允许的文件后缀
        done:function(res){
          //执行导入接口后操作
        }
      });
    })

    参考链接:https://www.cnblogs.com/52lnamp/p/9237704.html,https://blog.csdn.net/xgs736214763/article/details/78904780(感谢分享)
  • 相关阅读:
    MySQL简概
    IO模型
    协程
    multiprocessing模块
    Python线程的常见的lock
    111-使用post的方式传值(最简示例)
    110-使用正则匹配的方式从url获值
    109-get方式获取url传值
    108-使用表格,不依赖于后台而输入内容
    107-创建第一个动态模板
  • 原文地址:https://www.cnblogs.com/luqiang213917/p/14035552.html
Copyright © 2011-2022 走看看