姓名:齐鹏飞 学号: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'); `
网友评论