1.最近在工作中用到这个导出
2.
//前端页面定义按钮指到控制器的导入方法
public function export(){
$fileName = "重点交通违法行为数据统计报表.xlsx";
$fileNames = iconv('UTF-8', 'GBK', $fileName);
include ROOT_PATHS . 'classes/PHPExcel.php';
include ROOT_PATHS . 'classes/PHPExcel/Writer/Excel2007.php';
$objPHPExcel = new PHPExcel();
//设置excel的属性:
//创建人
$objPHPExcel->getProperties()->setCreator("admin");
//最后修改人
$objPHPExcel->getProperties()->setLastModifiedBy("admin");
//标题
$objPHPExcel->getProperties()->setTitle("重点交通行为数据统计表");
//题目
$objPHPExcel->getProperties()->setSubject("重点交通行为数据统计报表");
//描述
$objPHPExcel->getProperties()->setDescription("重点交通违法行为数据统计报表");
//关键字
$objPHPExcel->getProperties()->setKeywords("重点交通违法行为数据统计报表");
//种类
$objPHPExcel->getProperties()->setCategory("重点交通违法行为数据统计报表");
//设置当前的sheet
$objPHPExcel->setActiveSheetIndex(0);
//设置sheet的name
$objPHPExcel->getActiveSheet()->setTitle('重点交通违法行为数据统计报表');
//所有表格居中
$objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getRowDimension("1")->setRowHeight(25);
$objPHPExcel->getActiveSheet()->getRowDimension("2")->setRowHeight(25);
$objPHPExcel->getActiveSheet()->mergeCells('A1:A2');
$objPHPExcel->getActiveSheet()->setCellValue('A1', "处罚部门");
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(35);
//查询当前违法行为代码
$dm = $this -> m_keytraffic_statistics->select_all_keytraffic();
$zm = $this -> IntToChr(count($dm));
$objPHPExcel->getActiveSheet()->mergeCells('B1:'.$zm.'1');
$objPHPExcel->getActiveSheet()->setCellValue('B1', '2018年重点交通违法数据统计');
for($k = 1;$k <=count($dm);$k++){
$zm1 = $this -> IntToChr($k);
$objPHPExcel->getActiveSheet()->getColumnDimension($zm1)->setWidth(20);
}
for($i=1;$i<=count($dm);$i++){
$zm1 = $this -> IntToChr($i);
$objPHPExcel->getActiveSheet()->setCellValue($zm1.'2', $dm[$i-1]['WFMS']);
}
$objPHPExcel->getActiveSheet()->getStyle( 'A1:'.$zm.'2')->applyFromArray(
array(
'font' => array (
'bold' => true
),
'borders' => array(
'allborders' => array( //设置全部边框
'style' => \PHPExcel_Style_Border::BORDER_THIN
),
),
)
);
$objPHPExcel->getActiveSheet()->getStyle( 'A1:'.$zm.'32')->applyFromArray(
array(
'borders' => array(
'allborders' => array( //设置全部边框
'style' => \PHPExcel_Style_Border::BORDER_THIN
),
),
)
);
$start_time = $this -> input -> get('start_time',TRUE);
$end_time = $this -> input -> get('end_time',TRUE);
$result_data = $this -> data_statistics1($start_time,$end_time);
$objPHPExcel->getActiveSheet()->setCellValue('A3', "合计");
for($k = 1;$k <=count($dm);$k++){
$zm1 = $this -> IntToChr($k);
$objPHPExcel->getActiveSheet()->setCellValue($zm1.'3', $result_data['zs'][$k-1]);
}
for($l = 1; $l <= count($result_data['orgname']);$l++){
$num = $l + 3;
$objPHPExcel->getActiveSheet()->setCellValue('A'.$num, $result_data['orgname'][$l-1]);
}
for($a = 1;$a<=count($dm);$a++){
$zm1 = $this -> IntToChr($a);
for($b = 1;$b <=count($result_data['data'][$a-1]);$b++){
$num1 = $b + 3;
$objPHPExcel->getActiveSheet()->setCellValue($zm1.$num1, $result_data['data'][$a-1][$b-1]);
}
}
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
//或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式
$objWriter->save(ROOT_PATHS."assets/uploads/excel/".$fileNames);
//下载
$excelPath = ROOT_PATHS.'assets/uploads/excel/'.$fileNames;
header( "Content-Disposition: attachment; filename=".$fileNames); //告诉浏览器通过附件形式来处理文件
header('Content-Length: ' . filesize($excelPath)); //下载文件大小
readfile($excelPath); //读取文件内容
}
//将数字转化为字母 零就是A 以此类推
public function IntToChr($index, $start = 65) {
$str = '';
if (floor($index / 26) > 0) {
$str .= IntToChr(floor($index / 26)-1);
}
return $str . chr($index % 26 + $start);
}
public function data_statistics1($start_time,$end_time)
{
$data = $this -> m_keytraffic_statistics->select_all_orgname(); //部门名称和部门代码
$wfxw = $this -> m_keytraffic_statistics->select_all_keytraffic1();
foreach ($wfxw as $k1 => $v1){
$a[] = explode(',',$v1['WFXW']);
}
foreach ($data as $k => $v){
$orgname[] = $v['orgname'];
$res2 = substr($v['orgnum'],0,8);
foreach ($a as $k2 => $v2){
if(count($v2) == 1){
$num2 = $this -> db -> like('orgnum',$res2,'after') -> where('wfxw1',$v2['0']) -> where("wfsj between '$start_time 'and '$end_time'") -> where('sendstatus',1) -> where('issend',1) -> get('forceinfo') -> num_rows();
$num3 = $this -> db -> like('orgnum',$res2,'after') -> where('wfxw',$v2['0']) -> where("wfsj between '$start_time 'and '$end_time'") -> where('sendstatus',1) -> get('surveilinfo') -> num_rows();
$num4 = $this -> db -> like('orgnum',$res2,'after') -> where('wfxw',$v2['0']) -> where("wfsj between '$start_time 'and '$end_time'") -> where('sendstatus',1) -> where('issend',1) -> get('simpleinfo') -> num_rows();
$num6[$k2][] = $num2 + $num3 + $num4;
}else{
$num5 = $this -> db -> like('orgnum',$res2,'after') -> where_in('wfxw1',$v2) -> where("wfsj between '$start_time 'and '$end_time'") -> where('sendstatus',1) -> where('issend',1) ->get('forceinfo') -> num_rows();
$num7 = $this -> db -> like('orgnum',$res2,'after') -> where_in('wfxw',$v2) -> where("wfsj between '$start_time 'and '$end_time'") -> where('sendstatus',1) -> get('surveilinfo') -> num_rows();
$num8 = $this -> db -> like('orgnum',$res2,'after') -> where_in('wfxw',$v2) -> where("wfsj between '$start_time 'and '$end_time'") -> where('sendstatus',1) -> where('issend',1) ->get('simpleinfo') -> num_rows();
$num6[$k2][] = $num5 + $num7 + $num8;
}
}
}
foreach ($num6 as $k3 => $v3){
$date['zs'][] = array_sum($v3);
}
$date['data'] = $num6;
$date['orgname'] = $orgname;
return $date;
}