TP6框架--EasyAdmin学习笔记:Excel表单导入数据库

摘要:
空){$fileName=$_FILES['excel']['name'];//获取文件的全名$dotArray=explore;//将文件名分隔为数组$type=end;如果($type!=“xlsx”){$set['res']=“0”;$ret['msg']=“不是excel文件,请再次上载!file_exists){mkdir;}$path=$uploaddir.md5.'..$type;//生成随机文件名//$path=“images”/“$fileName;//客户端上载的文件名//必须是tmp_name moved from temporary folder_uploaded_file;//将临时文件从服务器复制到相应的文件夹$file_path=$path;如果(!”.$_files['excel']['error'];returnjson_encode;}//文件扩展名$ext=strtolower;如果{$objReader=PHPExcel_IOFactory::createReader;$objPHPExcel=$objReader-˃load;}elseif{$objReader=PHPExcel IOFactory::createReader;$objPHPExcel=$objReader-˃load;}$sheet=$obj PHPExcel-˃getSheet;$highestRow=$sheet-˃getHighestRow();//获取行总数$highestColumn=$sheet-˃getHighestColumn()//获取列总数$ar=array()$i=0;$importRows=0;对于{$importRows++;$realName=$objPHPExcel-˃getActiveSheet()-˃getCell-˃getValue();//要导入的realName$phone=$obj PHPExcel-˃getActiveSheet()-˃getCell-˃getValue(;//要导入的作业$email=$objPHPExcel-˃getActiveSheet()-˃getCell-˃getValue();//电子邮件$ret['mdata']=$this-˃addMemb要导入//这里有一种方法可以将操作定义添加到我的数据库中,并用您自己的if($ret['data']&&!

这是我写的学习EasyAdmin的第四章,这一章我给大家分享下Excel表单导入数据库的全流程需要怎么处理并提供案例

首先给大家看下这个功能的原理,下面是PHP连接打印机的代码

    public function uplExcel(Request $request)
    {
        if (!empty($_FILES['excel']['name'])) {
            $fileName = $_FILES['excel']['name'];    //得到文件全名
            $dotArray = explode('.', $fileName);    //把文件名安.区分,拆分成数组
            $type = end($dotArray);

            if ($type != "xls" && $type != "xlsx") {
                $ret['res'] = "0";
                $ret['msg'] = "不是Excel文件,请重新上传!";
                return json_encode($ret);
            }

            //取数组最后一个元素,得到文件类型
            $uploaddir = "../uploads2/" . date("Y-m-d") . '/';//设置文件保存目录 注意包含
            if (!file_exists($uploaddir)) {
                mkdir($uploaddir, 0777, true);
            }

            $path = $uploaddir . md5(uniqid(rand())) . '.' . $type; //产生随机文件名
            //$path = "images/".$fileName; //客户端上传的文件名;
            //下面必须是tmp_name 因为是从临时文件夹中移动
            move_uploaded_file($_FILES['excel']['tmp_name'], $path); //从服务器临时文件拷贝到相应的文件夹下

            $file_path = $path;
            if (!file_exists($path)) {
                $ret['res'] = "0";
                $ret['msg'] = "上传文件丢失!" . $_FILES['excel']['error'];
                return json_encode($ret);
            }

            //文件的扩展名
            $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION));
            if ($ext == 'xlsx') {
                $objReader = PHPExcel_IOFactory::createReader('Excel2007');
                $objPHPExcel = $objReader->load($file_path, 'utf-8');
            } elseif ($ext == 'xls') {
                $objReader = PHPExcel_IOFactory::createReader('Excel5');
                $objPHPExcel = $objReader->load($file_path, 'utf-8');
            }

            $sheet = $objPHPExcel->getSheet(0);
            $highestRow = $sheet->getHighestRow(); // 取得总行数
            $highestColumn = $sheet->getHighestColumn(); // 取得总列数
            $ar = array();
            $i = 0;
            $importRows = 0;
            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
                $ret['mdata'] = $this->addMemb($phone, $realName, $company, $job, $email);//这里就是我的数据库添加操作定义的一个方法啦,对应替换为自己的

                if ($ret['mdata'] && !is_Bool($ret['mdata'])) {
                    $ar[$i] = $ret['mdata'];
                    $i++;
                }
            }
            if ($i > 0) {
                $ret['res'] = "0";
                $ret['errNum'] = $i;
                $ret['allNum'] = $importRows;
                $ret['sucNum'] = $importRows - $i;
                $ret['mdata'] = $ar;
                $ret['msg'] = "导入完毕!";
                return json_encode($ret);
            }
            $ret['res'] = "1";
            $ret['allNum'] = $importRows;
            $ret['errNum'] = 0;
            $ret['sucNum'] = $importRows;
            $ret['mdata'] = "导入成功!";
            return json_encode($ret);
        } else {
            $ret['res'] = "0";
            $ret['msg'] = "上传文件失败!";
            return json_encode($ret);
        }
    }  

大家可以看到,正常的Excel导入流程分为上传+解析+数据处理+录入四部,整体的流程是调用对应的接口和插件,而使用TP框架,会直接帮我们绕过上传流程,我们使用PHPEXCEL插件直接到解析,具体代码如下:

下载PHPExcel放到vendor下,并在后台接口中导入

TP6框架--EasyAdmin学习笔记:Excel表单导入数据库第1张

public function save(){
       if(request() -> isPost())
       {
           vendor("PHPExcel.PHPExcel"); 
           $objPHPExcel =new PHPExcel();
 
           //var_dump($objPHPExcel);die;
           //获取表单上传文件
           $file = request()->file('excel');
           //print_r($file);die;
           $info = $file->validate(['ext' => 'xlsx'])->move(ROOT_PATH . 'public/file');  //上传验证后缀名,以及上传之后移动的地址  
 
           if($info)
           {
 
               $exclePath = $info->getSaveName();  //获取文件名
               $file_name = ROOT_PATH . 'public/file/' . DS . $exclePath;//上传文件的地址
               $objReader =PHPExcel_IOFactory::createReader("Excel2007");
               $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //加载文件内容,编码utf-8
               $excel_array=$obj_PHPExcel->getSheet(0)->toArray();   //转换为数组格式
 
               //print_r($excel_array);die;
               array_shift($excel_array);  //删除第一个数组(标题);
               $city = [];
               $i=0;
               foreach($excel_array as $k=>$v) {
 
               	   $click_time  = strtotime($v[2]);//点击时间转为时间戳
               	   $active_time = strtotime($v[2]);//激活时间转为时间戳
                   $city[$k]['adid']      = $v[0];
                   $city[$k]['idfa']      = $v[1];
                   $city[$k]['udid']      = $v[4];
                   $city[$k]['model']     = $v[5];
                   $city[$k]['os']        = $v[6];
                   $city[$k]['ip']        = $v[7];
                   $city[$k]['add_time']  = $click_time;
                   $city[$k]['act_time']  = $active_time;
 
                   $i++;
               }
 
              // print_r($city);die;
               Db::name("check_udid")->insertAll($city);
           }else
           {
               echo $file->getError();
           }
       }
   } 

EasyAdmin虽然基于TP6,在使用的过程中我发现,它不需要自己写以上方法,框架自带一些写好的上传方法,直接使用即可,具体方法如下:

在使用的php中导入:

use jianyanexcelExcel;

调用即可:

            $file = request()->file('file');
            ini_set('memory_limit','1024M');
            $data =  Excel::import($file);        

如果本文对你有所帮助,麻烦你点个赞,下一章讲下如何自制搜索框并进行各种参数调整。

免责声明:文章转载自《TP6框架--EasyAdmin学习笔记:Excel表单导入数据库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS UI-文本视图(UITextView)SQL Server中的事务日志管理(3/9):事务日志,备份与恢复下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

各种VBA excel 命令、属性、方法

本示例为设置密码窗口 (1)If Application.InputBox("请输入密码:") = 1234 Then        [A1] = 1 '密码正确时执行Else      MsgBox "密码错误,即将退出!" '此行与第2行共同设置密码End If'本示例为设置密码窗口 (1)X = MsgBox("是否真的要结帐?", vbYesNo)...

Java:将数据库数据导出到Excel (一眼就看会)

所用Jar包 1. sqljdbc4.jar 连接数据库的Jar包(根据数据库的不同进行选择,我用的SqlServer2008) 2.Jxl.jar 访问Excel的Jar包 注意:支持以.xls结尾的Excel文件,可能不支持.xlsx结尾的 实现效果: 数据库数据: 导出的Excel: 完整代码: 导出的核心代码就四五行 类里需要import的包也...

把页面的Table直接输出到Excel文件中

有个需求是统计的时候,为生成的html表格提供导出功能,但是这样导出Excel不会显示自身的表格 影响美观,但是excel会显示html的css样式,这里可以通过处理行对象的方式进行导出,但是处理起纵向合并比较麻烦,这里待续! 1 String newStr = new String(name.getBytes(), "ISO8859_1"); 2 res...

[转]tableExport.js 导出excel 如果有负数或是空值 导出前面会自动加上单引号

原文地址:https://blog.csdn.net/private66/article/details/88718285 tableExport.js  导出excel  如果有负数或是空值 导出前面会自动加上单引号 解决办法: 修改源码  修改 tableExport.js   2068 行,把  该行注释后 ,另起一行    return str...

如何通过WPS 2013 API 将Office(Word、Excel和PPT)文件转PDF文件

1.描述 PDF文件是一种便携文件格式,是由Adobe公司所开发的独特的跨平台文件格式。PDF文件以PostScript语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即PDF会忠实地再现原稿的每一个字符、颜色以及图象。可移植文档格式,也称为"便携文档格式",是一种电子文件格式。这种文件格式与操作系统平台无关,也就是说,PDF文件...

利用Python将excel数据读取到word表格

在工作中可能需要两者对excel和word进行转化,今天介绍例如Python 将excel转word表格 看图,我需要将这份excel文档转word表格: 思路: 1、创建需要的表格; 2、读取excel文档; 3、将excel文档数据写入word表格对应的位置; 4、循环 需要用到的模块 创建表格,由于我需要的表格需要进行合并处理,所以使用merge...