thinkPHP5 使用PHPExcel导出Excel文件

首先要下载一个PHPExcel      https://pan.baidu.com/s/1WhNUd4Cphzey_Y3sNc5XKg

我这个是composer下载的   但是没有关系   都是一样的

前端代码:

<form action="ADMIN_MAIN/Excel/out" enctype="multipart/form-data" method="post">
    <input type="submit" value="导出">
</form>

创建Excel控制器和out方法:

首先use两个类,否则会报错:

use PHPExcel_IOFactory;
use PHPExcel;

可以新建一个单独的类也可以新建一个方法    但是首先要把这两个引用加载进去

然后引入vendor里面的PHPExcel类:

vendor("PHPExcel.PHPExcel.PHPExcel");
vendor("PHPExcel.PHPExcel.Writer.Excel5");
vendor("PHPExcel.PHPExcel.Writer.Excel2007");
vendor("PHPExcel.PHPExcel.IOFactory");

一般引用vendor里面的类或者插件用vendor();
里面加载的就是vendor文件,然后想要加载哪个文件,直接写就行,中间的“.”相当于文件路径的“/”。

在这里vendor("PHPExcel.PHPExcel.PHPExcel");这里看自己的路径是什么样的 就写成什么样的 下面的是我自己的实例



最后不写php。这样就加载进来了。
接下来实例化类时候,一定要加“\”。

实例化完了之后就先把数据库里面的数据查出来:

$sql = db('sys_user')->select();

有了数据,就可以设置Excel表的表头信息了:

 /*--------------设置表头信息------------------*/
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'ID编号')
            ->setCellValue('B1', '用户名')
            ->setCellValue('C1', '手机号');

这里的A1,B1是A列第一行。以此类推,就是表头了,想要哪些信息就写什么,只要数据库有,接下来可以对的上就行。

接下来就是查到的信息,对号入座到表格中:

 /*--------------开始从数据库提取信息插入Excel表中------------------*/


        $i=2;  //定义一个i变量,目的是在循环输出数据是控制行数
        $count = count($sql);  //计算有多少条数据
        for ($i = 2; $i <= $count+1; $i++) {
            $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $sql[$i-2][uid]);
            $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $sql[$i-2][user_name]);
            $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $sql[$i-2][user_tel]);

$i = 2,因为第一行是表头,所以写到表格时候只能从第二行开始写。
然后for循环。不知道的,我也无能为力。

接下来就是设置导入表的名称等内容了

 /*--------------下面是设置其他信息------------------*/

        $objPHPExcel->getActiveSheet()->setTitle('user');      //设置sheet的名称
        $objPHPExcel->setActiveSheetIndex(0);                   //设置sheet的起始位置
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');   //Excel2003通过PHPExcel_IOFactory的写函数将上面数据写出来
        $PHPWriter = \PHPExcel_IOFactory::createWriter( $objPHPExcel,"Excel2007"); //Excel2007
        header('Content-Disposition: attachment;filename="用户信息.xlsx"');
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        $PHPWriter->save("php://output"); //表示在$path路径下面生成demo.xlsx文件

到这里,数据导出已经完成






!!!   千万不要使用js实现这个功能,js不能和本地存储进行交互,浏览器也不会给这个权限,执行导出,用a链接或者form表单提交都可以


如果程序是在linux下运行    需要使用 Excel5  格式 在linux下   解析不了xlsx    可以解析xls文件      


只需要修改这三个地方  就可以实现在linux下  导出报表了

猜你喜欢

转载自blog.csdn.net/sunsijia21983/article/details/79741714