美文网首页嵌牛IT观察
ThinkPHP3.2+PHPExcel导入、导出Excel

ThinkPHP3.2+PHPExcel导入、导出Excel

作者: 恳请叫我红领巾 | 来源:发表于2017-12-17 13:50 被阅读0次

    姓名:齐鹏飞  学号:17021211161

    本文为原创,转载请注明出处。

    【嵌牛导读】在Web项目中时常会遇到MySQL和Excel的导入、导出,本文基于ThinkPHP框架总结一下相关方法

    【嵌牛鼻子】PHP MySQL Excel

    【嵌牛提问】如果导入Excel文件过大,导入时间会很慢,甚至会出现超出内存的情况,该怎么办呢????

    【嵌牛正文】

    下载PHPExcel 解压 放到ThinkPHP目录下 Library/Vendor下 目录结构如图所示

    `//导入Excel文件到数据库

    Public function daoru(){

    $upload=new \Think\Upload();//实例化上传类

    $upload->maxSize =3145728;//设置上传文件大小上限

    $upload->exts = array('xls','xlsx');//设置上传文件类型

    $upload->rootPath = './Uploads/';//上传文件根目录

    $unload->savePath = '';//上传文件子目录

    $info = $upload->upload();//上传动作

    if(!$info){

    $this->error($upload->getError());//上传错误提示

    }

    $file_name= $upload->rootPath.$info['import']['savepath'].$info['import']['savename'];//获取上传文件路径

    vendor("PHPExcel.Classes.PHPExcel");//引入PHPExcel扩展类库

    $exts=$info['import']['ext'];//获取上传文件格式

    if($exts = = "xls"){

    $objReader=\PHPExcel_IOFactory::createReader('Excel5');//设置读取文件方式

    } if($exts = = "xlsx"){

    $objReader=\PHPExcel_IOFactory::createReader('Excel2007');//设置读取文件方式

    }

    $objPHPExcel = $objReader->load($file_name,$encode='utf-8');//读取文件

    $sheet = $objPHPExcel->getSheet(0);//获取Excel第一张表

    $highestRow = $sheet->getHighestRow(); // 取得总行数

    $highestColumn = $sheet->getHighestColumn(); // 取得总列数

    $code=M('code');//实例化数据表

    for($i=1;$i<=$highestRow;$i++){//循环

    $data['val']= $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue();//获取A列第一行的值

    $code->add($data);//插入数据库

    }

    $this->success('导入成功!');

    } `

    //导出数据到Excel

    ` public function daochu(){

    vendor("PHPExcel.Classes.PHPExcel");//引入扩展类库

    $objPHPExcel = new \PHPExcel();//实例化类

    $objWriter = new \PHPExcelWriterExcel5($objPHPExcel);//设置保存版本格式

    //设置单元格宽度 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(30);

    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30);

    $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(60);

    $objPHPExcel->getActiveSheet()->setCellValue('A1','编号');

    $objPHPExcel->getActiveSheet()->setCellValue('B1','服务类型');

    $objPHPExcel->getActiveSheet()->setCellValue('C1','服务项目');

    $arr=array();//$arr替换成你要输出的数组

    foreach ($arr as $key => $value) {//循环输出内容

    $i=$key+1;

    $a=$i+1;

    $objPHPExcel->getActiveSheet()->setCellValue('A'.$a, $value['r_id']);//这里是设置A列单元格的内容

    $objPHPExcel->getActiveSheet()->setCellValue('B'.$a, $value['r_name']);

    $objPHPExcel->getActiveSheet()->setCellValue('C'.$a, $value['r_age']);

    }

    header("Pragma: public");

    header("Expires: 0");

    header("Cache-Control:must-revalidate, post-check=0, pre-check=0");

    header("Content-Type:application/force-download");

    header("Content-Type:application/vnd.ms-execl");

    header("Content-Type:application/octet-stream");

    header("Content-Type:application/download");

    header('Content-Disposition:attachment;filename=name.xls');

    header("Content-Transfer-Encoding:binary");

    $objWriter->save('name.xls');

    $objWriter->save('php://output'); `

    相关文章

      网友评论

        本文标题:ThinkPHP3.2+PHPExcel导入、导出Excel

        本文链接:https://www.haomeiwen.com/subject/mobywxtx.html