您现在的位置是:网站首页 > 脚本编程>

thinkphp+phpexcel实现导出excel文件到本地

2014-04-156010人围观
简介 上周五写了thinkphp+phpexcel实现导入excel文件到数据库今天闲着无聊研究一下导出excel的方式,有了phpexcel什么都变的很简单了没有那么繁琐的步骤了。记得在以前写了个导出excel结果实现了导出excel但是导出来的excel的格式非常的难看没有办法进行美化的。最原始的导出excel的办法就是利用header()函数进行文件。其实phpexcel也是利用header...

上周五写了thinkphp+phpexcel实现导入excel文件到数据库今天闲着无聊研究一下导出excel的方式,有了phpexcel什么都变的很简单了没有那么繁琐的步骤了。记得在以前写了个导出excel结果实现了导出excel但是导出来的excel的格式非常的难看没有办法进行美化的。最原始的导出excel的办法就是利用header()函数进行文件。其实phpexcel也是利用header()函数进行导出的。只不过是多了美化的过程而以。不罗嗦了贴出代码。

html部分

<div><a href="/download/"/>导出Excel</a></div>

执行代码部分

public function download()

{

      import("Org.Excel.PHPExcel");
      import("Org.Excel.PHPExcel.Writer.Excel5");
      import("Org.Excel.PHPExcel.IOFactory.php");
      //创建处理对象实例
      $objPhpExcel=new PHPExcel();
      $objPhpExcel->getActiveSheet()->getDefaultColumnDimension()->setAutoSize(true);//设置单元格宽度
      //设置表格的宽度  手动
      $objPhpExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
      $objPhpExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
      $objPhpExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
      $objPhpExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
      $objPhpExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);
      $objPhpExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
      $objPhpExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
      $objPhpExcel->getActiveSheet()->getColumnDimension('H')->setWidth(20);
      $objPhpExcel->getActiveSheet()->getColumnDimension('I')->setWidth(20);
      $objPhpExcel->getActiveSheet()->getColumnDimension('J')->setWidth(20);
      $objPhpExcel->getActiveSheet()->getColumnDimension('K')->setWidth(20);
      $objPhpExcel->getActiveSheet()->getColumnDimension('L')->setWidth(20);
      $objPhpExcel->getActiveSheet()->getColumnDimension('M')->setWidth(20);
      //设置标题
      $rowVal = array(0=>'姓名',1=>'性别', 2=>'年龄', 3=>'身份证号码', 4=>'电话',
      5=>'邮箱', 6=>'服装尺寸', 7=>'详细地址', 8=>'紧急联系人',
      9=>'紧急联系电话',10=>'领取地点',11=>'领取时间',12=>'付款状态');
      foreach ($rowVal as $k=>$r){
       $objPhpExcel->getActiveSheet()->getStyleByColumnAndRow($k,1)
       ->getFont()->setBold(true);//字体加粗
       $objPhpExcel->getActiveSheet()->getStyleByColumnAndRow($k,1)->
       getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//文字居中
       $objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow($k,1,$r);
      }
      //设置当前的sheet索引 用于后续内容操作
      $objPhpExcel->setActiveSheetIndex(0);
      $objActSheet=$objPhpExcel->getActiveSheet();
      //要导出的内容
      $map['sid']=$_GET['sid'];    
      $ss=M("Match");
      $ssmc=$ss->where(array("id"=>$map['sid']))->find();
      $list=M("Match_bm");
      $rs=$list->where($map)->select();
      //设置当前活动的sheet的名称
      $title=$ssmc['title'];
      $objActSheet->setTitle($title);
      //设置
      $sex=array("女","男");
      $fk=array("未付款","付款");
      //设置单元格内容
      foreach($rs as $k => $v)
      {
       $num=$k+2;
       $objPhpExcel->setActiveSheetIndex(0)
       //Excel的第A列,uid是你查出数组的键值,下面以此类推
       ->setCellValue('A'.$num, $v['uname'])
       ->setCellValue('B'.$num, $sex[$v['sex']])
       ->setCellValue('C'.$num, $v['yearold'])
       ->setCellValue('D'.$num, $v['sfid'])
       ->setCellValue('E'.$num, $v['tel'])
       ->setCellValue('F'.$num, $v['email'])
       ->setCellValue('G'.$num, $v['fsize'])
       ->setCellValue('H'.$num, $v['address'])
       ->setCellValue('I'.$num, $v['urgentname'])
       ->setCellValue('J'.$num, $v['urgenttel'])
       ->setCellValue('K'.$num, $v['areaid'])
       ->setCellValue('L'.$num, $v['lqtime'])
       ->setCellValue('M'.$num, $fk[$v['fk']]);
      }
      $name=date('Y-m-d');//设置文件名

      header("Content-Type:application/force-download");
      header("Content-Type:application/octet-stream");
      header("Content-Type:application/download");
      header("Content-Transfer-Encoding:utf-8");
      header("Pragma:no-cache");
      header("Content-Type:application/vnd.ms-excel");
      header('Content-Disposition: attachment;filename="'.$title.'_'.urlencode($name).'.xls"');
      header("Cache-Control:max-age=0");
      $objWriter = PHPExcel_IOFactory::createWriter($objPhpExcel, 'Excel5');
      $objWriter->save('php://output');
    exit;


}

效果图



打赏本站,你说多少就多少

精彩评论

微信关注

Copyright © 2013-2019 千奇博客 保留所有权利 辽ICP备13008238号