ThinkPHP3.2+PHPExcel导入、导出Excel

姓名:齐鹏飞  学号:17021211161

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

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

【嵌牛鼻子】PHP MySQL Excel

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

【嵌牛正文】

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

ThinkPHP3.2+PHPExcel导入、导出Excel_第1张图片

`//导入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)