ThinkPHP3.2导入PHPExcel类并实现数据库导出excel操作

前言

作为一个服务端开发人员,在日常开发过程中,难免会碰到一些凭借自己能力短期内无法解决的问题,比如说下午接到一个需求——需要导出一份客户的日常数据为excel表格的形式,如果凭借自己的力量可能一个PHP和Excel软件联动的API都写不出来,所以这时就体现出善用开源第三方类库的重要性,直接下载已经写好的类,阅读接口文档,调用其中的方法实现需求是最快最稳健的实现方法

环境背景

在公司实习期间碰到了这个需求,如标题所示,环境和需求已经明确——需要在TP3.2框架中完成这个导出所需数据的excel表格

解决步骤

1.首先找到自己语言所写好的第三方开源类,这里用到的是PHPExcel,在此分享github地址和中文手册地址

github地址戳这里
PHPExcel中文手册详解地址戳这里

2.下载好PHPExcel后将其解压,只需要Classes文件夹里的东西

ThinkPHP3.2导入PHPExcel类并实现数据库导出excel操作_第1张图片

3.接下来就是在框架里加载这个类,由于是TP3.2版本过老,对Composer的支持还不能做到自动加载需要手动引入下,将上一步解压好的类文件放在TP3.2的对应Org目录下 并在所需要用到的地方将其import进来如图所示

ThinkPHP3.2导入PHPExcel类并实现数据库导出excel操作_第2张图片
代码块

4.所有准备工作都已做好,根据文档写个小demon试试手吧

ThinkPHP3.2导入PHPExcel类并实现数据库导出excel操作_第3张图片

大概思路就是:先new一个PHPExcel对象,通过这个对象的链式操作方法,一步一步将所需要的值设定好,例如

     $excel = new \PHPExcel();
     $excel->getProperties()->setCreator("Puppy");
     $excel->getProperties()->setTitle('User');
     $excel->getProperties()->setSubject("testForExportExcel");

提示: 这几句话的设置在很多时候没有必要,平常一个excel文件,没人会打开它的属性看他的详细信息,setCreator是设置创建这个文件的作者等。。

重点是之后的操作:

首先设置当前操作的sheet如图所示sheet也默认下标从0开始,setActiveSheetIndex()就是为了让之后的所有操作都作用于此sheet

ThinkPHP3.2导入PHPExcel类并实现数据库导出excel操作_第4张图片

再之后,从数据库中用Model提前写好的方法获取数据,然后用如下的方法一一赋值 ,key是表格对应的位置,如A1,B1等,而value就是需要填进对应表格的值

$excel->getActiveSheet()->setCellValue("key","value");

最后将写好的数据表格提供下载链接给用户就行了,在这里贴出比较官方点的实现方法,直接调用就好

        $filename = "testForExportExcel";
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="'.$filename.'.xls"');
        header('Cache-Control: max-age=0');
        // If you're serving to IE 9, then the following may be needed
        header('Cache-Control: max-age=1');
        // If you're serving to IE over SSL, then the following may be needed
        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($excel);
        $objWriter->save('php://output');

总结

即便是再小的项目或者需求,只要用心探索就能找到升华的途径,做好平凡的工作也是一种不平凡,实习继续加油!!!!

你可能感兴趣的:(实用探索)