工作上有个功能需要把报表导出,做完之后在这里码一下。
使用方法其实极其简单,下载好PHPExcel的第三方库之后直接引入,TP自带有的vendor方法就不错。
function excel($firstline,$data,$fieldname='excel'){
vendor('phpexcel/PHPExcel');
$phpexcel = new \PHPExcel();
$phpexcel->getProperties()->setCreator("LYT")
->setLastModifiedBy("LYT")
->setTitle("数据EXCEL导出")
->setSubject("数据EXCEL导出")
->setDescription("备份数据")
->setKeywords("excel")
->setCategory("result file");
$Letternum=65;
foreach ($firstline as $k=>$v){
$letternum = $Letternum++;
$phpexcel->setActiveSheetIndex(0)
->setCellValue(chr($letternum).'1', $v);
}
$i=0;
foreach($data as $k => $v){
$i++;
$num=$k+2;
$Letternum=66;
foreach ($v as $key=>$value){
//如果这里用不到下面的时间戳转换和身份证处理(较长的数字会变成科学计数法)就可以把下方的代码删除了,而且后台做也会比较占用服务器资源
//时间戳换成时间格式
if(strpos($key,'time')!==false){
$value=date('Y-m-d H:i:s',$value);
};
//处理身份证
if(strpos($key,'certcode')!==false){
$value=' '.$value;
};
//设置序号列,这个序号可以让前端自己循环加
$phpexcel->setActiveSheetIndex(0)//
->setCellValue(chr(65).$num, $i);
$letternum = $Letternum++;
//将数据填入
$phpexcel->setActiveSheetIndex(0)
->setCellValue(chr($letternum).$num, $value);
}
}
$phpexcel->getActiveSheet()->setTitle('LYT');
$phpexcel->setActiveSheetIndex(0);
header('Content-Type: applicationnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$fieldname.'.xls"');
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($phpexcel, 'Excel5');
//外部调用后进行下载
$objWriter->save('php://output');
exit;
}
这里只是分享了个简单的导出
0 条评论