类似于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中的代码

 <?php
/***
* mysql的配置文件
* */
$phpexcel = array(
"host" => "localhost",
"username" => "root",
"password" => "",
"database" => "test",
"charset" => "utf8"
);

dbconfig.php

 <?php
/**
* 创建一个类db用来连接数据库及定义对数据库的操作
* */
require dirname(__FILE__).'/dbconfig.php';//引入配置文件
//创建一个db类
class db{
public $conn = null; public function __construct($config){//构造方法 实例化类时自动调用
$this -> conn = mysql_connect($config["host"],$config["username"],$config["password"]) or die(mysql_error());
mysql_select_db($config["database"]) or die(mysql_error());//选择数据库
mysql_query("set names ".$config["charset"]) or die(mysql_error());//设定数据库编码
} //根据传入sql语句 查询mysql结果集 =》mysql单例模式
public function getResult($sql){
$resource = mysql_query($sql) or die(mysql_error());//查询sql语句
$res = array();
while(($row = mysql_fetch_assoc($resource)) != false){//以行取出资源句柄里的信息
$res[] = $row;
}
return $res;
//var_dump($res)."<br>";
} //传入年纪数 导出每个年纪的学生数据
public function getDataByGrade($grade){
$sql ="select username,score,class from user where grade=".$grade." order by score desc";
//$sql="select username,score,class from user where grade=".$grade." order by score desc";
$res = self::getResult($sql);
var_dump($res);
return $res;
} }

db.php

 <?php
/**
*用来导出数据表中的数据到Excel中的主要文件
* */
$dir = dirname(__FILE__); require $dir."/db.php";
require $dir."/PHPExcel/PHPExcel.php"; $db = new db($phpexcel);//实例化的db类 连接mysql数据库
$objPHPExcel = new PHPExcel();//新建一个PHPEXcel对象 for($i = 1;$i <= 3; $i ++){
if($i > 1){
$objPHPExcel -> createSheet();
}
$objPHPExcel -> setActiveSheetIndex($i - 1);//下标从零开始
$objSheet = $objPHPExcel -> getActiveSheet();//设置新建的sheet为当前活动sheet
$objSheet -> setTitle($i.'年级');
$data = $db -> getDataByGrade($i);//查询每个年级学生的信息
//var_dump($data)."<br>"; //导出数据
$objSheet -> setCellValue("A1","姓名")-> setCellValue("B1","成绩")-> setCellValue("C1","班级");
$j = 2; foreach($data as $key => $val){
var_dump($val);
$objSheet->setCellValue("A".$j,$val['username'])->setCellValue("B".$j,$val['score'])->setCellValue("C".$j,$val['class']."班");
$j++;
} } $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,"Excel2007");//生成excel文件
$objWriter -> save($dir."/export_1.xlsx");//保存到当前目录下面

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++;
}

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

  1. PHPExcel探索之旅---阶段四 导入文件

    步骤就是:实例化excel读取对象=> 加载excel文件 => 读取excel文件(全部读取.逐行读取) <?php header("Content Type :text ...

  2. PHPExcel探索之旅---阶段三 绘制图表

    利用PHPExcel插件进行绘制图表 <?php /** * 使用PHPExcel插件在excel文件中利用其中的数据建立折线图 * */ $dir = dirname(__FILE__); r ...

  3. PHPExcel探索之旅---阶段二 设置表格样式

    1.设置表格的默认样式为水平居中.垂直居中 getDefaultStyle()函数用来设置默认样式 由活动sheet对象来调用,setVertical()函数和setHorizontal()函数分别用 ...

  4. PHPExcel探索之旅

    学习地址: https://www.imooc.com/video/8359 下载地址: https://packagist.org/packages/phpoffice/phpexcel 用comp ...

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

    内容简介 1.课程大纲 2.第二部分第一课: 模块化编程 3.第二部分第二课预告: 进击的指针,C语言王牌 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...

  6. 【Linux探索之旅】第二部分第二课:命令行,世界尽在掌握

    内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:“小编,你为什么每次都要起这么非主 ...

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

    内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是 ...

  8. 【Web探索之旅】第四部分:Web程序员

    内容简介 1.第四部分第一课:什么是Web程序员? 2.第四部分第二课:如何成为Web程序员? 3.第四部分第三课:成为优秀Web程序员的秘诀 第四部分:Web程序员(完结篇) 大家好.终于来到了[W ...

  9. 【Web探索之旅】第三部分第一课:服务器

    内容简介 1.第三部分第一课:服务器 2.第三部分第二课预告:IP地址和域名 第三部分第一课:服务器 大家好,欢迎来到[Web探索之旅]的第三部分.这一部分有不少原理,还是很重要的. 这一部分我们会着 ...

随机推荐

  1. BZOJ4545: DQS的trie

    BZOJ4545: DQS的trie https://lydsy.com/JudgeOnline/problem.php?id=4545 分析: 对trie用dfs建sam复杂度是\(O(n^2)\) ...

  2. Swift中的参数内部名称和外部名称

    1.什么是参数的内部名称和外部名称? struct Color { let red, green, blue: Double init(red redColor: Double,green green ...

  3. vijos1779国王游戏

    描述 恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这n位大臣排成一排,国王站在队伍的最前面.排好队后, ...

  4. 【转】 Pro Android学习笔记(六四):安全和权限(1):签发apk

    目录(?)[-] Android安全模型 数字证书签发 Debug的keystore 生产unsigned的apk 为apk进行证书签发 align安装包 使用Export Wizard生成签发的ap ...

  5. 七 内置锁 wait notify notifyall; 显示锁 ReentrantLock

    Object中对内置锁进行操作的一些方法: Java内置锁通过synchronized关键字使用,使用其修饰方法或者代码块,就能保证方法或者代码块以同步方式执行. 内置锁使用起来非常方便,不需要显式的 ...

  6. JavaScript之使用JavaScript模仿oop编程

    第一, 首先,使用关键字function定义一个类 function Shape1(ax,ay) {//此时将function看成声明类的标志 ; ; var init=function () {// ...

  7. python 基础 字典生成式

    dict1 = {1:2,3:4,6:7,9:10} print dict((v,k) for k,v in dict.items()) 结果 {2:1.4:3,10:9,7:6} res = [{' ...

  8. linux命令-yum工具详解

    yum比rpm的优势在于解决依赖关系.可以指定源. [root@wangshaojun ~]# yum list ////列出rpm包资源 网络资源 rrdtool-php.      x86_64 ...

  9. Java探索之旅(8)——继承与多态

    1父类和子类: ❶父类又称基类和超类(super class)子类又称次类和扩展类.同一个package的子类可以直接(不通过对象)访问父类中的(public,缺省,protected)数据和方法. ...

  10. 关于Synchronized关键字锁住对象的嵌套问题

    如果在子关键字代码块中调用了sleep,是否会保留有所的锁?