PHPExcel探索之旅---阶段一

类似于Java,php也有操作Excel的方法,其中需要下载PHPExcel插件,将其中的Classes文件夹改名为PHPExcel并提取到根文件夹外面,将两个文件夹一起放在所需项目中

使用PHPExcel插件需要先实例化一个PHPExcel对象 整个过程需要用到以下函数:

  new PHPExcel() ----新建一个PHPExcel对象

  createSheet() -----新建一个sheet表

  setActiveSheetIndex() ---- 通过下标设置活动sheet表

  getActiveSheet() ---- 得到当前为活动状态的sheet表,返回的是对象

  setTitle() ---- 给当前活动sheet表设置名字

  setCellValue("A1","填充内容") ---- 给单元格填充数据

  $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,"Excel2007") ----- 生成excel文件

  $objWriter -> save($dir."/export_1.xlsx") ----- 保存到当前目录下面

下面是将数据库中user表中的数据提取出来填充到Excel中的代码

 1 <?php
 2     /***
 3      * mysql的配置文件
 4      * */
 5     $phpexcel = array(
 6             "host" => "localhost",
 7             "username" => "root",
 8             "password" => "",
 9             "database" => "test",
10             "charset" => "utf8"
11     );

dbconfig.php

 1 <?php
 2     /**
 3      * 创建一个类db用来连接数据库及定义对数据库的操作
 4      * */
 5     require dirname(__FILE__).‘/dbconfig.php‘;//引入配置文件
 6     //创建一个db类
 7     class db{
 8         public $conn = null;
 9
10         public function __construct($config){//构造方法 实例化类时自动调用
11             $this -> conn = mysql_connect($config["host"],$config["username"],$config["password"]) or die(mysql_error());
12             mysql_select_db($config["database"]) or die(mysql_error());//选择数据库
13             mysql_query("set names ".$config["charset"]) or die(mysql_error());//设定数据库编码
14         }
15
16         //根据传入sql语句 查询mysql结果集 =》mysql单例模式
17         public function getResult($sql){
18             $resource = mysql_query($sql) or die(mysql_error());//查询sql语句
19             $res = array();
20             while(($row = mysql_fetch_assoc($resource)) != false){//以行取出资源句柄里的信息
21                 $res[] = $row;
22             }
23             return $res;
24             //var_dump($res)."<br>";
25         }
26
27         //传入年纪数 导出每个年纪的学生数据
28         public function getDataByGrade($grade){
29             $sql ="select username,score,class from user where grade=".$grade." order by score desc";
30             //$sql="select username,score,class from user where grade=".$grade." order by score desc";
31             $res = self::getResult($sql);
32             var_dump($res);
33             return $res;
34         }
35
36     }

db.php

 1 <?php
 2     /**
 3      *用来导出数据表中的数据到Excel中的主要文件
 4      * */
 5     $dir = dirname(__FILE__);
 6
 7     require $dir."/db.php";
 8     require $dir."/PHPExcel/PHPExcel.php";
 9
10     $db = new db($phpexcel);//实例化的db类 连接mysql数据库
11     $objPHPExcel = new PHPExcel();//新建一个PHPEXcel对象
12
13     for($i = 1;$i <= 3; $i ++){
14         if($i > 1){
15             $objPHPExcel -> createSheet();
16         }
17         $objPHPExcel -> setActiveSheetIndex($i - 1);//下标从零开始
18         $objSheet = $objPHPExcel -> getActiveSheet();//设置新建的sheet为当前活动sheet
19         $objSheet -> setTitle($i.‘年级‘);
20         $data = $db -> getDataByGrade($i);//查询每个年级学生的信息
21         //var_dump($data)."<br>";
22
23
24         //导出数据
25         $objSheet -> setCellValue("A1","姓名")-> setCellValue("B1","成绩")-> setCellValue("C1","班级");
26         $j = 2;
27
28              foreach($data as $key => $val){
29                  var_dump($val);
30                 $objSheet->setCellValue("A".$j,$val[‘username‘])->setCellValue("B".$j,$val[‘score‘])->setCellValue("C".$j,$val[‘class‘]."班");
31                 $j++;
32              }
33
34
35
36     }
37
38         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,"Excel2007");//生成excel文件
39         $objWriter -> save($dir."/export_1.xlsx");//保存到当前目录下面
40
41
42
43
44     

export.php

出现的主要问题:

  

  $res = array();
  while(($row = mysql_fetch_assoc($resource)) != false){//以行取出资源句柄里的信息
    $res[] = $row;
  }

上面的代码的意思是将数据表中的每一条数据以关联数组的形式取出来并作为数组$res的一个原子,而数组$res包含的是整个数据表中的所有信息

所以输出时有:

foreach($data as $key => $val){
  $objSheet->setCellValue("A".$j,$val[‘username‘])->setCellValue("B".$j,$val[‘score‘])->setCellValue("C".$j,$val[‘class‘]."班");
  $j++;
}

时间: 2024-10-12 16:40:31

PHPExcel探索之旅---阶段一的相关文章

【C++探索之旅】第一部分第十一课:小游戏,猜单词

内容简介 1.第一部分第十一课:小游戏,猜单词 2.第一部分第十二课预告:指针一出,谁与争锋 小练习 上一课<[C++探索之旅]第一部分第十课:文件读写,海阔凭鱼跃>中我们学习了读写文件的知识. 第一部分的课程也快接近尾声了,下一课我们会学习很重要的指针的知识.之后,我们就进入第二部分:面向对象编程了.哈哈哈,激动不? 目前为止,我们也学了不少内容:编译基本原理,IDE,变量,函数,条件语句,循环语句,引用,数组,文件读写,等等.你应该为自己感到自豪. 俗语说得好:实践是最好的老师.我们学了那

【C语言探索之旅】 第二部分第一课:模块化编程

内容简介 1.课程大纲 2.第二部分第一课: 模块化编程 3.第二部分第二课预告: 进击的指针,C语言王牌 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量

【Linux探索之旅】第三部分第二课:流、管道、重定向,三管齐下

内容简介 1.第三部分第二课:流.管道.重定向,三管齐下 2.第三部分第三课预告:监视系统活动,滴水不漏 流.管道.重定向,三管齐下 这一课我们来学一些非常有用的内容,而且相当有意思,而且内容很多,而且有可能颠覆你的三<观>(毕竟三管齐下,不颠覆三观也难). 今天的标题中的三个名称,听上去就怪怪的.什么流,管道,重定向,都啥玩意啊.不过希望学完这课,大家能够有拨云见雾的感觉. 到目前为止,我们已经学习了不少Linux的命令了,也已经比较熟悉命令行的用法了.其最基本用法是这样的: 在终端输入命令

【Linux探索之旅】第二部分第六课:Nano,初学者的文本编辑器

内容简介 1.第二部分第六课:Nano,初学者的文本编辑器 2.第二部分第七课预告:软件安装,如虎添翼 Nano,初学者的文本编辑器 这一课比较简单,没有什么太难的概念.不过这一课会讲如何配置终端噢. 大家可以泡个泡面,烤只烤鸡:剥个卤蛋,慢慢来看. 之前的课程中,我们已经学会了在终端中用多种不同的方式来查看文件的内容,但是我们还不知道如何在终端中修改文件的内容. 为什么我们把文本编辑器推迟到现在来说呢?因为这是终端可以提供的强大功能之一. 在Linux终端的文本编辑器当中,比较著名的有:Nan

【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布

内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做了介绍,也带大家配置了SDL的开发环境.请大家按照上一课的步骤创建一个SDL工程,能够初步运行. 如果遇到问题,可以百度,Google相关平台SDL的配置.或者联系小编. 当然了,有些朋友可能会说开发C语言游戏还可以用GTK+这个库,但是个人认为GTK+没有SDL那么适合开发游戏,其创建图形界面的能

WCF探索之旅(五)——WCF与WebService的异同

前几篇文章我们简单的介绍了WCF以及如何使用它,今天我们来讨论一下WCF和WebService的异同. 相信大多数同学跟我一样,对于WebService有所了解,而且应该说你是先听说WebService,后听说还有个WCF的,对不对?那好,我们今天来一起看看,这两者有何不同. WebService是标准,是一种规范.严格来说WebService是一种行业标准,不是一种特定的技术.而WCF是一种WebService的实现.在WCF之前,微软系列中有ASP.NET Web Service,后来微软做

【C++探索之旅】第二部分第一课:面向对象初探,string的惊天内幕

内容简介 1.第二部分第一课:面向对象初探,string的惊天内幕 2.第二部分第二课预告:掀起了"类"的盖头来(一) 面向对象初探,string的惊天内幕 上一课<[C++探索之旅]第一部分第十二课:指针一出,谁与争锋>中,大家辛苦了. 诚然,指针是不容易啃的硬骨头.不过,假以时日,小火慢炖,可以成为一碗上好的骨头汤,对你的C++水平那可是大补. 好了,口水擦一擦,我们正式进入C++探索之旅的第二部分啦,激动不?刚擦完的哈喇子可不要继续流啊. 这一部分的课程称为:C++之

【C++探索之旅】第一部分第八课:传值引用,文件源头

内容简介 1.第一部分第八课:传值引用,文件源头 2.第一部分第九课预告:数组威武,动静合一 传值引用,文件源头 这一课的标题有点怪.其实是由这一课的几个重点内容结合起来取的名,慢慢学习就知道啦. 上一课<[C++探索之旅]第一部分第七课:函数效应,分而治之>中,我们初步认识了函数. 不过不要高兴得太早,你以为函数就这样离你远去了嘛?怎么可能,函数将伴随一生好吗,只要你继续编程的话.哈哈,所以你是跑不掉了~ [小编,都跟你签了协议了,没吃药不要随便出来溜达] 这一课我们就继续深入学习与函数相关

【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见

内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是什么,以及如何安装Linux系统(我们以Ubuntu这个Linux发行版为以后的演示系统),我们也在上一课终于把Ubuntu安装好了. "很不错,掌声给自己". 安装Ubuntu遇到什么问题,可以在我们的QQ群和微信群提问,也可以私信小编,QQ.微信.邮件都行.联系方式在下面. Linux