thinkPHP5框架导出Excel文件简单操作示例
本文实例讲述了thinkPHP5框架导出Excel文件简单操作。分享给大家供大家参考,具体如下:
1.首先安装PHPExcel这里用composer安装
composerrequirephpoffice/phpexcel
2.在控制类引用
usePHPExcel_IOFactory; usePHPExcel;
3.在控制其中书写导出方法
/**
*导出迟到数据
*/
publicfunctionexport_later()
{
$date=explode("-",input("get.date"));
$_opt['year']=$date[0];
$_opt['month']=$date[1];
$laterArray=Db::name('user')->select();//查找user表数据
$xlsName=$_opt['month']."月迟到早退数据统计";
$xlsCell=array(
array('user_name','姓名'),
array('user_accounts','工号'),
array('later_times','迟到次数'),
array('total_later','迟到累计(分钟)'),
array('early_times','早退次数'),
array('total_early','早退累计(分钟)'),
);//查出字段输出对应Excel对应的列名
//公共方法调用
export_excel($xlsName,$xlsCell,$laterArray);
}
/**
*公共数据导出实现功能
*@param$expTitle导出文件名
*@param$expCellName导出文件列名称
*@param$expTableData导出数据
*/
functionexport_excel($expTitle,$expCellName,$expTableData)
{
$xlsTitle=iconv('utf-8','gb2312',$expTitle);//文件名称
$fileName=$expTitle.date('_Ymd');//or$xlsTitle文件名称可根据自己情况设定
$cellNum=count($expCellName);
$dataNum=count($expTableData);
$objPHPExcel=newPHPExcel();//方法一
$cellName=array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA',
'AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX',
'AY','AZ');
//设置头部导出时间备注
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$expTitle.'导出时间:'.date('Y-m-dH:i:s'));
//设置列名称
for($i=0;$i<$cellNum;$i++){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2',$expCellName[$i][1]);
}
//赋值
for($i=0;$i<$dataNum;$i++){
for($j=0;$j<$cellNum;$j++){
$objPHPExcel->getActiveSheet(0)->setCellValue(
$cellName[$j].($i+3),$expTableData[$i][$expCellName[$j][0]]
);
}
}
ob_end_clean();//这一步非常关键,用来清除缓冲区防止导出的excel乱码
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls");//"xls"参考下一条备注
$objWriter=\PHPExcel_IOFactory::createWriter(
$objPHPExcel,'Excel5'
);//"Excel2007"生成2007版本的xlsx,"Excel5"生成2003版本的xls
$objWriter->save('php://output');
}
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《ZendFrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。