千家信息网

tp怎么实现excel的导入和导出

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,本篇内容介绍了"tp怎么实现excel的导入和导出"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一:
千家信息网最后更新 2024年11月22日tp怎么实现excel的导入和导出

本篇内容介绍了"tp怎么实现excel的导入和导出"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一:下载phpExcel第三方类库

下载地址:http://www.thinkphp.cn/topic/14005.html下载官方网站;

二:下载成功之后将文件放到Vendor下:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。

三:配置数据库的信息操作(我的是在home文件夹下(application/home/config/config.php)添加如下配置):

'配置值'    'DB_TYPE'   => 'mysql', // 数据库类型    'DB_HOST'   => 'localhost', // 服务器地址    'DB_NAME'   => 'db_oa', // 数据库名    'DB_USER'   => 'root', // 用户名    'DB_PWD'    => 'root', // 密码    'DB_PORT'   => 3306, // 端口     'DB_PREFIX' => 'tg_', // 数据库表前缀//    'DB_FIELDS_CACHE'       =>  false,        // 启用字段缓存(开发时这个要写成false))?>

四:模板代码:

导出数据并生成excel


实现功能的控制器方法:

1>导出数据方法的实现:

function expUser(){//导出Excel        //获取表头名:        $xlsName  = "evaluate_check";        //获取文件里面具体的数据        $xlsCell  = array('教师检查作业表', '所属功能','所属权限','所属学生','学生答案'        );//        连接数据库找到查询的表        $xlsModel = M('evaluate_check');//        通过调用select方法field查找数据表里面的字段        $xlsData  = $xlsModel->Field('id,tep_id,tet_id,student_id,student_anwser')->select();        $this->exportExcel($xlsName,$xlsCell,$xlsData);    }    public function exportExcel($expTitle,$expCellName,$expTableData){//        抓取文件名将字符编码转换成utf8格式        $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称//       命名Excel文件的文件名称,通过时间函数随即打乱        $fileName = $_SESSION['account'].date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定        //通过count函数获取到字段的行数        $cellNum = count($expCellName);       //获取具体的值        $dataNum = count($expTableData);//        var_dump(count($expTableData));exit;        //引入具体的类库        vendor("PHPExcel.PHPExcel");//        echo '111111dfgfhj';exit;        //实例化方法,得到所有的方法;        $objPHPExcel = new \PHPExcel();        //设置单元格的行数        $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');//        var_dump($cellName);exit;//        var_dump($objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1'));exit;        $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格//        echo '1111111';exit;//        var_dump($objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1'));exit;//         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.'  Export time:'.date('Y-m-d H:i:s'));        //对获取的行号进行循环遍历并且赋值        for($i=0;$i<$cellNum;$i++){           $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i]);        }        $objPHPExcel->getActiveSheet()->setTitle($expTitle);        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$expTitle);        // Miscellaneous glyphs, UTF-8//        var_dump($dataNum);exit;        //对获取的列好进行遍历赋值输出        for($i=0;$i<$dataNum;$i++){            for($j=0;$j<$cellNum;$j++){               $a  = array_values($expTableData[$i]) ;                $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3),$a[$j]);            }        }        ob_end_clean();//清楚缓冲避免乱码        header('pragma:public');        //设置表头信息        header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');        header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印        //通过调用如下方法来创建Excel将值写入        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');        //进行保存下载        $objWriter->save('php://output');        exit;    }

3>导入数据方法的实现:

(1)选取你要导入的xls文件,进行操作

(2)代码如下:

function impUser(){         //判断你的文件是否为空        if (!empty($_FILES)) {//            引入类库            vendor("PHPExcel.PHPExcel");            //获取存储文件的文件名            $file_name=$_FILES['import']['tmp_name'];            //调用如下方法来读取你表里面的信息            $objReader = \PHPExcel_IOFactory::createReader('Excel5');//            var_dump($objReader);exit;            //读取到的临时文件名的信息            $objPHPExcel = $objReader->load($file_name,$encode='utf-8');            //获取Excel表格的列数            $sheet = $objPHPExcel->getSheet(0);            $highestRow = $sheet->getHighestRow(); // 取得总行数            $highestColumn = $sheet->getHighestColumn(); // 取得总列数//            将值进行写入            for($i=3;$i<=$highestRow;$i++)            {                $data['account']= $data['truename'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();                $sex = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();                // $data['res_id']    = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();                $data['class'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();                $data['year'] = $objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();                $data['city']= $objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();                $data['company']= $objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue();                $data['zhicheng']= $objPHPExcel->getActiveSheet()->getCell("I".$i)->getValue();                $data['zhiwu']= $objPHPExcel->getActiveSheet()->getCell("J".$i)->getValue();                $data['jibie']= $objPHPExcel->getActiveSheet()->getCell("K".$i)->getValue();                $data['honor']= $objPHPExcel->getActiveSheet()->getCell("L".$i)->getValue();                $data['tel']= $objPHPExcel->getActiveSheet()->getCell("M".$i)->getValue();                $data['qq']= $objPHPExcel->getActiveSheet()->getCell("N".$i)->getValue();                $data['email']= $objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue();                $data['remark']= $objPHPExcel->getActiveSheet()->getCell("P".$i)->getValue();                $data['sex']=$sex=='男'?1:0;                $data['res_id'] =1;                $data['last_login_time']=0;                $data['create_time']=$data['last_login_ip']=$_SERVER['REMOTE_ADDR'];                $data['login_count']=0;                $data['join']=0;                $data['avatar']='';                $data['password']=md5('123456');                //通过以下方法,将值添加到数据库中;                M('Member')->add($data);            }            $this->success('导入成功!');        }else        {            $this->error("请选择上传的文件");        }    }

说明:最后的数据库信息以你具体的表信息为主,在M('表明')->add($data);

$data里面的数据也以你真实的表为基础

"tp怎么实现excel的导入和导出"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0