phpexcel实现数据导出

/**
* 用于生成excel文件的函数
* author:walker
* @param $data 生成excel的数据(二维数组形式)
* @param null $savefile 生成excel的文件名(保不指定,则为当前时间戳)
* @param array $title 生成excel的表头(一维数组形式)
* @param string $sheetname 生成excel的sheet名称(缺省为sheet1)
* @param string $isfirst 生成excel的setActiveSheetIndex(活动单元)
*/

/*自定义导出函数*/

function exportExcel($data,$title=array(),$savefile='',$sheetname='sheet1',$isfirst=1){
//若没有指定文件名则为当前时间戳
$savefile.=date('Y-m-d');
Vendor('PHPExcel');
import('PHPExcel.IOFactory');
Vendor('PHPExcel.PHPExcel.Reader.Excel5');
$objPHPExcel = new \PHPExcel();
$nn=0;$row=1;//行
foreach($title as $k=>$r){
$col=chr(65+$nn);//列
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($col.$row,$r);//列,行,值
$nn++;

}
$field = array_keys($title);$num = count($data);$fieldnum = count($title);

//Excel内容
for($i=0;$i<$num;$i++){
for($j=0;$j<$fieldnum;$j++){
$col=chr(65+$j);//列
$objPHPExcel->getActiveSheet(0)->setCellValue($col.($i+2),' '.$data[$i][$field[$j]]);
}
}
$objPHPExcel->getActiveSheet()->setTitle($sheetname);
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$savefile.'.xls"');
header('Cache-Control: max-age=0');
$obj = new \PHPExcel_IOFactory();
$objWriter = $obj->createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}

//调用导出函数

$data = M('member')->field('nickname,country,province,city')->select();
$title = array('nickname'=>'昵称',
'country'=>'国家',
'province'=>'省',
'city'=>'市');
$savefile = '会员信息';
exportExcel($data,$title,$savefile);

 

posted @ 2018-02-01 10:42  lsbaiwyl  阅读(136)  评论(0编辑  收藏  举报