您现在的位置是:首页 PHP
ThinkPHP3.2.3 导出操作实例
博主
添加时间:2017-03-13 16:36:37
【PHP】
热度:927人已围观
1,加载第三方类库PHPExcel 点击下载 PHPExcel.zip
2,在TP的function.php中写入这个方法
/** * @desc 导出excel文件的方法 * @param $data 导出的数据 * @param $title 导出文件的文件名称 * @param array $titles 导出数据的列表头名称 */ function extraExcel($data,$title,$titles){ $colls = count($titles); //共有多少列 reset($titles); //将键指向titles数组的首部 // /** PHPExcel */ // require_once WWW.'/libs/PHPExcel.php'; vendor("PHPExcel"); // /** PHPExcel_IOFactory */ // require_once WWW.'/libs/PHPExcel/IOFactory.php'; //Create new PHPExcel object 创建一个处理对象实例 $objPHPExcel = new PHPExcel(); // Add some data $index='A'; //设置当前的sheet索引,用于后续的内容操作。一般只有在使用多个sheet的时候才需要显示调用。缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0 $sheet = $objPHPExcel->setActiveSheetIndex(0); //设置单元格的值 设置第一行显示的列标题 $sheet->setCellValue('A1',$title); //设置第二行显示的各项标题 $fcode = 'A'; for($i=0;$i<$colls;$i++){ $col = chr(ord($fcode)+$i); if($i>25){ $ccol = chr(ord($fcode)+($i-26)); $col = 'A'.$ccol; } $sheet->setCellValue($col.'2',$titles[key($titles)]); next($titles); } //设置下边的数据显示项 $code='A'; $row = 3; foreach($data as $key => $val){ reset($titles); for($j=0;$j<$colls;$j++){ $col = chr(ord($code)+$j); if($j>25){ $ccol = chr(ord($code)+($j-26)); $col = 'A'.$ccol; } $sheet->setCellValue($col.$row,$data[$key][key($titles)]); next($titles); } $row ++; } //获取最后一行是第几行 $lastrow = count($data)+3; //最后一行是第几行 数据的条数加头部三行 $last_code = 'B'; //Rename sheet 设置当前活动sheet的名称 //$objPHPExcel->getActiveSheet()->setTitle($title); //设置宽度 $last = 'A'; for($i=0;$i<$colls;$i++){ $co = chr(ord($last)+$i); if($i>25){ $ccol = chr(ord($last)+($i-26)); $co = 'A'.$ccol; } $objPHPExcel->getActiveSheet()->getColumnDimension($co)->setWidth (20); } //最后一列的字母 $allcol = chr(ord($last_code)+$colls-2); if($colls>26){ $ccol = chr(ord($last_code)+($colls-28)); $allcol = 'A'.$ccol; } //合并单元格 $objPHPExcel->getActiveSheet()->mergeCells('A1:'.$allcol.'1'); //设置字体大小 $cod = 'A'; for($i=0;$i<$colls;$i++){ $co = chr(ord($cod)+$i); if($i>25){ $ccol = chr(ord($cod)+($i-26)); $co = 'A'.$ccol; } $objPHPExcel->getActiveSheet()->getStyle($co.'2')->getFont()->setSize(10); } //设置填充颜色 $objStyleA1 = $objPHPExcel->getActiveSheet()->getStyle('A1'); $objFillA1 = $objStyleA1->getFill(); $objFillA1->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $objFillA1->getStartColor()->setARGB('FFEEEEEE'); //设置对齐方式 $objAlignA1 = $objStyleA1->getAlignment(); $objAlignA1->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objAlignA1->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //第二行设置背景颜色 $objStyleA2 = $objPHPExcel->getActiveSheet()->getStyle('A2'); $objFillA2 = $objStyleA2->getFill(); $objFillA2->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $objFillA2->getStartColor()->setARGB('FFEEEEEE'); //第二行设置对齐方式 $objAlignA2 = $objStyleA2->getAlignment(); $objAlignA2->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objAlignA2->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //第二行设置边框 $objBorderA2 = $objStyleA2->getBorders(); $objBorderA2->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); $objBorderA2->getBottom()->setBorderStyle (PHPExcel_Style_Border::BORDER_THIN); $objBorderA2->getLeft()->setBorderStyle (PHPExcel_Style_Border::BORDER_THIN); $objBorderA2->getRight()->setBorderStyle (PHPExcel_Style_Border::BORDER_THIN); //重复样式 $objPHPExcel->getActiveSheet()->duplicateStyle($objStyleA2,'A2:'. $allcol.'2'); //设置数据行的对齐方式 $objStyleA3 = $objPHPExcel->getActiveSheet()->getStyle('A3:'.$allcol. $lastrow); $objAlignA3 = $objStyleA3->getAlignment(); $objAlignA3->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objAlignA3->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //设置行高 $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30); //Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); $filename=$title; $filename=iconv('utf-8','gbk',$filename); $G_format = 'Excel5'; if($G_format=='Excel5'){ // Redirect output to a client’s web browser (Excel5) ob_end_clean();//清除缓冲区,避免乱码 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'. $filename.'.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); }else{ header('Content-Type: application/vnd.openxmlformats- officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="'. $filename.'.xlsx"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); } exit; }
3,在html中选择你要导出的数据
例如:点击下载 exp.html.zip
4,在PHP文件中做处理,例如:(只供参考)
Public function orderexp(){ $idres = explode(',',$_GET['id']); $title = date("Y-m-d").'订单下载'; foreach ($idres as $k => $v) { $orderInfo = M("order")->where("id = '{$v}' ")->find(); # code... $data[$k]['id'] = $v; $data[$k]['order_no'] = $orderInfo['order_no']; $data[$k]['order_name'] = $orderInfo['order_name']; $data[$k]['order_price'] = $orderInfo['order_price']; $data[$k]['pay_stauts'] = M("dict")->where("id = ".$orderInfo['pay_stauts']." ")->cache(true)->getField('name'); $data[$k]['pay_type'] = M("dict")->where("id = ".$orderInfo['pay_type']." ")->cache(true)->getField('name'); $data[$k]['status'] = M("dict")->where("id = ".$orderInfo['status']." ")->cache(true)->getField('name'); $data[$k]['realname'] = $orderInfo['realname']; $data[$k]['ctime'] = $orderInfo['ctime']; } // dump($data);die; $headerarr=array( 'id'=>'ID', 'order_no'=>'编号', 'order_name'=>'订单名字', 'order_price'=>'金额', 'pay_stauts'=>'订单状态', 'pay_type'=>'支付方式', 'status'=>'发货状态', 'realname'=>'客户姓名', 'ctime'=>'订单时间', ); extraExcel($data,$title,$headerarr); }
OK 上面配置完成就可以 进行导出了
-
Mac 如何关闭自带的Apache
安装XAMPP后,启动服务时提示Apache启动失败,80端口被占用.查看进程发现存在几个httpd. OS X自带Apache,可是默认是没有启动的.我也没有开启Web共享,怎么就开机启动了呢? 不知道是不是因为安装了别的什么软件导致的.一般的开机启动项可以在System Preferences–Users&Groups–Login Items中添加或删除.可是在这里也没有发现Apache相关的启动项.于是谷歌到了下面一个可行的方法,打开终端,执行下面的命令.
-
LNMP环境下WordPress网站二级目录伪静态设置
今天在给客户网站做二级目录的分类,网站一直报错404,显示应该是伪静态问题。看了下LNMP环境里的WordPress规则,貌似没有支持二级目录的。所以只好自己加一个了。目前VPS主机中使用LNMP一键安装包搭建的环境都没有带二级目录的规则。有需要的朋友可以复制下面的代码,可以让wordpress完美使用伪静态的设置。找到”/usr/local/nginx/conf/wordpress.conf”文件,然后添加:
-
一个程序员的自白:我为什么写博客
尝试和接触的知识一多, 便发现自己的脑袋跟硬盘相比, 速度和精准度上都差得不止一星半点. 事情越来越多, 且没有交集, 所有的知识点都零散的分布在脑袋的不同次元, 想要回忆起来特别困难. 一度让我觉得, 学越来越多的东西根本就是一个错误, 正确的方式应该是瞅准一个东西, 精益求精. 虽然这么想, 但是工作不是你想不做就不做的.
-
PHP中把stdClass Object转array的几个方法
我们在经常使用API接口获取数据返回json数值的时候,往往单纯通过json_decode方法解析获得得数值一般并非数组,而是带有stdClass Objec的对象字符串,这时如果我们想获取相应的PHP数组时,需通过以下几种方法来获取。
-
PHP验证类库_收集开发常用验证方法
我们在开发项目的时候往往会通过PHP的正则方式来判断用户所输入的信息是否合格或者正确,下面我给大家收集和整理成一个类,供大家参考和使用。如有问题请留言谈论。
文章评论
标签云 更多
-
PHP(35)
MySQL(0)
Linux(1)
前端(0)
SEO优化(0)
随笔(9)
PHP基础(1)
PHP类库(5)
PHP实例(56)
PHP函数(518)
PHP高级(0)
PHP与数据库(0)
PHP进阶(0)
PHP应用(0)
PHP安全(0)
PHP框架专栏(0)
PHP开放平台(0)
PHP面试题(62)
SEO专栏(569)
基础教程(120)
环境(154)
语法(15)
变量(13)
字符串(15)
运算符(6)
流程控制(13)
数组(188)
表单(4)
开发经验(120)
日期(31)
引用(11)
文件处理(39)
文件上传(21)
Cookie&Session(107)
E-mail(1)
点击排行
站长推荐
打赏本站
- 如果你觉得本站很棒,可以通过扫码支付打赏哦!
- 微信扫码:你说多少就多少~
- 支付宝扫码:你说多少就多少~