thinkPHP5框架导出Excel文件简单操作示例
程序员文章站
2022-04-14 09:37:30
本文实例讲述了thinkphp5框架导出excel文件简单操作。分享给大家供大家参考,具体如下:
1. 首先安装phpexcel 这里用composer安装
c...
本文实例讲述了thinkphp5框架导出excel文件简单操作。分享给大家供大家参考,具体如下:
1. 首先安装phpexcel 这里用composer
安装
composer require phpoffice/phpexcel
2. 在控制类引用
use phpexcel_iofactory; use phpexcel;
3. 在控制其中书写导出方法
/** * 导出迟到数据 */ public function export_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 导出数据 */ function export_excel($exptitle,$expcellname,$exptabledata) { $xlstitle = iconv('utf-8', 'gb2312', $exptitle);//文件名称 $filename = $exptitle . date('_ymd');//or $xlstitle 文件名称可根据自己情况设定 $cellnum = count($expcellname); $datanum = count($exptabledata); $objphpexcel = new phpexcel();//方法一 $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-d h: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)框架进阶教程》、《zend framework框架入门教程》及《php模板技术总结》。
希望本文所述对大家基于thinkphp框架的php程序设计有所帮助。
上一篇: 教你实测无线路由器安全功能的技巧方法
下一篇: PHP实现非阻塞模式的方法分析