laravel框架集成PHPExcel讲解及demo

      首先,由于业务需求,需要把一些数据用excel导出,给硬件人员看。由于我自己用的是laravel 的一键安装包,所以使用laravel自带的Excel就成为了一种奢望。因此,这里使用PHPExcel,这个通用性较强的第三方。

一、下载并引入到项目中

1、先去PHPExcel官网下载,直接去gitHub上下载即可。地址:
https://github.com/PHPOffice/PHPExcel

2、将下载好的文件引进我们的项目

这里写图片描述

关于laravel引入第三方库的方法:
http://blog.csdn.net/ljfphp/article/details/78546179

3、将关键代码引入控制器方法中

//这里使用base_path()方法获取项目根目录,然后引入文件。
   require_once(base_path() . '/app/Libs/PHPExcel/Classes/PHPExcel.php');
   //
    require_once(base_path() . '/app/Libs/PHPExcel/Classes/PHPExcel/Writer/Excel2007.php');

二、实际demo

  //PHPExcel带出excel表格
  public function test_export(Request $request){
    require_once(base_path() . '/app/Libs/PHPExcel/Classes/PHPExcel.php');
    require_once(base_path() . '/app/Libs/PHPExcel/Classes/PHPExcel/Writer/Excel2007.php');

    //要输出的数据,二维数组
    $datas = array(
      array('王城', '男', '18', '1997-03-13', '18948348924'),
      array('李飞虹', '男', '21', '1994-06-13', '159481838924'),
      array('王芸', '女', '18', '1997-03-13', '18648313924'),
      array('郭瑞', '男', '17', '1998-04-13', '15543248924'),
      array('李晓霞', '女', '19', '1996-06-13', '18748348924'),
    );
    // 创建一个excel
    $objPHPExcel = new \PHPExcel();
    //设置文件创建人,文件名,以及excel表格的表头部分
    $objPHPExcel->getProperties()->setCreator("金峰兄")->setLastModifiedBy("金峰兄")->setTitle("金峰兄")->setSubject("金峰兄")->setDescription("金峰兄")->setKeywords("金峰兄")->setCategory("金峰兄");
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', '名字')->setCellValue('B1', '性别')->setCellValue('C1', '年龄')->setCellValue('D1', '出生日期')->setCellValue('E1', '电话号码');

    // 表格的标题
    $objPHPExcel->getActiveSheet()->setTitle('金峰兄-' . date('Y-m-d'));

    //设置当前的表格,也就是第一行的表格
    $objPHPExcel->setActiveSheetIndex(0);
    //设置所有表格的默认高度
    $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(15);

    //循环赋值,填充表格
      foreach ($datas as $k=>$data) {
        //由于$k是键名,是从0开始的,而我们的表格的正式内容的第一行是表头部分,比如:姓名,年龄等
        //所以这边的 A.($k+2)代表的是A2的内容,相当于都从第二行开始填充
        $objPHPExcel->getActiveSheet()->setCellValue('A' . ($k+2), $data[0])->getStyle('A' . ($k+2))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
        $objPHPExcel->getActiveSheet()->setCellValue('B' . ($k+2), $data[1]);
        $objPHPExcel->getActiveSheet()->setCellValue('C' . ($k+2), $data[2]);
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('D' . ($k+2), $data[3], \PHPExcel_Cell_DataType::TYPE_STRING);
        $objPHPExcel->getActiveSheet()->getStyle('D' . ($k+2))->getNumberFormat()->setFormatCode("@");

        // 设置文本格式
        $objPHPExcel->getActiveSheet()->setCellValueExplicit('E' . ($k+2), $data[4], \PHPExcel_Cell_DataType::TYPE_STRING);
        $objPHPExcel->getActiveSheet()->getStyle('E' . ($k+2))->getAlignment()->setWrapText(true);

      //}
    }
    //这边可以打印下,就可以看到我们已经把数组的内容放到excel对象中了
    /*    var_dump($objPHPExcel);
      exit;*/
    $objActSheet = $objPHPExcel->getActiveSheet();

    // 设置CELL填充颜色
    $cell_fill = array(
      'A1',
      'B1',
      'C1',
      'D1',
      'E1',
    );
    // TODO 加注释
    //设置格式
    foreach($cell_fill as $cell_fill_val){
      $cellstyle = $objActSheet->getStyle($cell_fill_val);
      $cellstyle->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT)->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
      // 字体格式,中间的14代表了字体的大小
      $cellstyle->getFont()->setSize(14)->setBold(true);
      // 边框格式
      $cellstyle->getBorders()->getTop()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB('FFFF0000');
      $cellstyle->getBorders()->getBottom()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB('FFFF0000');
      $cellstyle->getBorders()->getLeft()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB('FFFF0000');
      $cellstyle->getBorders()->getRight()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN)->getColor()->setARGB('FFFF0000');
    }
    //设置第一行单元格高度
    $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);
    //设置单元格的宽度
    $objActSheet->getColumnDimension('A')->setWidth(18.5);
    $objActSheet->getColumnDimension('B')->setWidth(23.5);
    $objActSheet->getColumnDimension('C')->setWidth(12);
    $objActSheet->getColumnDimension('D')->setWidth(12);
    $objActSheet->getColumnDimension('E')->setWidth(12);

    $filename = '峰兄的测试表格';
    ob_end_clean();//清除缓冲区,避免乱码
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="'.$filename.'.xls"');
    header('Cache-Control: max-age=0');
    // 如果是在ie9浏览器下,需要用到这个
    header('Cache-Control: max-age=1');
    // 如果你是在ie浏览器或者https下,需要用到这个
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
    header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
    header('Pragma: public'); // HTTP/1.0
    $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
    $objWriter->save('php://output');
  }

这段代码是经过我测试的,大家可以直接粘贴下来,先在本地跑一下,看看生成的文件。然后再仔细的看一下注释,解释的挺清楚的。

具体可参考PHPExcel中文手册:
http://www.jquerycn.cn/a_17115

三、成功演示

这里写图片描述

      这就是我本地测试生成的excel文件,确实是成功了。当然,实际使用中,数据是需要我们自己查询,然后转换为数组的,这个就需要大家根据自己的逻辑来写了。

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值