当前位置: 首页 > 后端技术 > PHP

CI框架下php数据库数据导入excel

时间:2023-03-29 18:59:07 PHP

查看层(JS):$("#download_excel_archieve_btn").click(function(e){varurl="";varxhr=newXMLHttpRequest();varparams=$("#form").serialize();xhr.open('POST',url,true);xhr.responseType='arraybuffer';xhr.onload=function(){if(this.status===200){varfilename="";vardisposition=xhr.getResponseHeader('Content-Disposition');if(disposition&&disposition.indexOf('attachment')!==-1){varfilenameRegex=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;varmatches=filenameRegex.exec(disposition);if(matches!=null&&matches[1])filename=matches[1].replace(/['"]/g,'');}vartype=xhr.getResponseHeader('内容类型');varblob=newBlob([this.response],{type:type});if(typeofwindow.navigator.msSaveBlob!=='undefined'){window.navigator.msSaveBlob(blob,文件名);}else{varURL=window.URL||窗口.webkitURL;vardownloadUrl=URL.createObjectURL(blob);如果(文件名){vara=document.createElement("a");if(typeofa.download==='undefined'){window.location=downloadUrl;}else{a.href=downloadUrl;a.download=文件名;文档.body.appendChild(a);a.点击();}}else{window.location=downloadUrl;}setTimeout(function(){URL.revokeObjectURL(downloadUrl);},100);}}};xhr.setRequestHeader("内容类型","application/x-www-form-urlencoded");xhr.send(参数);e.stopPropagation();返回假;});controller层:publicfunctiondownload_excel_all(){//获取前段传送的数据$begin_time=$this->input->post('begin_time');$end_time=$this->input->post('end_time');$client_type=$this->input->post('client_type');$app_version=$this->input->post('appversion');$uid=$this->input->post('uid');$event_type=$this->input->post('event_type');$限制=3000;//判断数据if(empty($begin_time)){$begin_time=NULL;}如果(空($end_time)){$end_time=NULL;}if(empty($client_type)){$client_type=NULL;}if(empty($appversion)){$app_version=NULL;}如果(空($uid)){$uid=NULL;}if(empty($event_type)){$event_type=NULL;}//添加类库$this->load->library('PHPExcel');//查询加载数据$this->load->model('errorlog/Report_model');$exceldata=$this->Report_model->get($begin_time,$end_time,$this->partner_id,$uid,$event_type,$app_version,$client_type,$offset,$limit);if($exceldata['data']==FALSE){$this->load->vars('error','没有统计数据');}array_unshift($exceldata['data'],array_keys($exceldata['data'][0]));$行=1;$this->phpexcel=newPHPExcel();做{$col=0;$row_data=current($exceldata['data']);foreach($row_dataas$value){$this->phpexcel->getActiveSheet()->setCellValueByColumnAndRow($col,$row,$value);}$col++;}$行++;}while(下一个($exceldata['data']));$objWriter=newPHPExcel_Writer_Excel2007($this->phpexcel);header('内容类型:application/vnd.ms-excel');header('Content-Disposition:attachment;filename="error_report.xlsx"');$objWriter->save('php://output');}模型层:/*获取报错数据$client_type为客户端类型:1,PC;2、苹果手机;16、Android手机*/publicfunctionget($begin_time=NULL,$end_time=NULL,$partner_id=NULL,$uid=NULL,$event_type=NULL,$app_version=NULL,$client_type=1,$offset=0,$limit=10){$conditions=array('1'=>'1');如果(isset($begin_time)){$conditions['postime>=']=$begin_time;}if(isset($end_time)){$conditions['postime<=']=$end_time;}if(isset($partner_id)){$conditions['parnerid']=$partner_id;}if(isset($uid)){$conditions['uid']=$uid;}if(isset($event_type)){$conditions['eventtype']=$event_type;}if(isset($app_version)){$conditions['appver']=$app_version;}if(isset($client_type)){$conditions['clienttype']=$client_type;}$query=$this->db->select('count(*)astotal',FALSE)->from('client_exception_report')->where($conditions)->get();if($query==FALSE){返回FALSE;}$row=$query->first_row('array');$query->free_result();$query=$this->db->select('*,module,eventtype',FALSE)->from('client_exception_report')->where($conditions)->order_by('postime','desc')->limit($limit,$offset)->get();if($query==FALSE){返回FALSE;}$rs['数据']=$query->result_array();$rs['total']=$row['total'];$query->free_result();//查询module_description(模块描述)和event_description(事件描述)if($rs['总计']!=0){$eventtypes=$modules=array();foreach($rs['data']as$row){if(!isset($modules[$row['module']]))$modules[$row['module']]=$row['module'];如果(!isset($eventtypes[$row['module']]))$eventtypes[$row['eventtype']]=$row['eventtype'];$query=$this->db->select('descriptionasmodule_description,module_id',FALSE)->from('event_list')->where_in('module_id',$modules)->get();如果($query==FALSE){返回FALSE;}$_rs=$query->result_array();$module_array=array();foreach($_rsas$key=>$row){$module_array[$row['module_id']]=$row['module_description'];}$query->free_result();foreach($rs['data']作为$key=>$行){$rs['data'][$key]['module_description']=$module_array[$rs['data'][$key]['module']];$query=$this->db->select('descriptionasevent_description,event_id',FALSE)->from('event_list')->where_in('event_id',$eventtypes)->get();如果($query==FALSE){返回FALSE;}$_rs=$query->result_array();$event_array=array();foreach($_rsas$key=>$row){$event_array[$row['event_id']]=$row['event_description'];}$query->free_result();foreach($rs['data']as$key=>$row){$rs['data'][$key]['event_description']=$event_array[$rs['data'][$key]['事件类型']];}}返回$rs;}