本篇内容介绍了“tp怎么实现excel的导入和导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一:下载phpExcel第三方类库
下载地址:http://www.thinkphp.cn/topic/14005.html下载官方网站;
二:下载成功之后将文件放到Vendor下:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。
三:配置数据库的信息操作(我的是在home文件夹下(application/home/config/config.php)添加如下配置):
<?php return array( //'配置项'=>'配置值' '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) ) ?>
四:模板代码:
<html> <head> </head> <body> <P><a href="{:U('Index/expUser')}" >导出数据并生成excel</a></P><br/> <form action="{:U('Index/impUser')}" method="post" enctype="multipart/form-data"> <input type="file" name="import"/> <input type="hidden" name="table" value="tablename"/> <input type="submit" value="导入"/> </form> </body> </html> <?php ?>
实现功能的控制器方法:
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的导入和导出”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。