类似于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. HihoCoder1664 01间隔方阵([Offer收割]编程练习赛40)(DP)

    给定一个NxM的01矩阵,小Hi希望从中找到一个01间隔的子方阵,并且方阵的边长越大越好. 例如对于 0100100 1000101 0101010 1010101 0101010 在右下角有一个4x ...

  2. 【C++】标准库sort函数的自定义排序

    自定义排序需要单独写一个compare函数 例1 LeetCode 056. Merge Intervals Given a collection of intervals, merge all ov ...

  3. BZOJ1206:[HNOI2005]虚拟内存

    我对模拟的理解:https://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem ...

  4. 51nod 1250 排列与交换——dp

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1250 仔细思考dp. 第一问,考虑已知 i-1 个数有多少种方案. ...

  5. office2016_windows永久激活查看方法

    YC7N8-G7WR6-9WR4H-6Y2W4-KBT6X 首先要保证你安装了 百云址:http://pan.baidu.com/share/home?uk=4011207371 如果你是win8,w ...

  6. NorthSJ项目零碎知识点

    1 div显示纵向滚动条: <div style="overflow-y:auto;overflow-x:hidden;"></div> 2 FineUI的 ...

  7. wpf 样式继承

    当定义的wpf多个样式,其样式内容(属性.触发器等)有较多的重复时,可以考虑将其抽象成父样式,来提升样式代码的可维护性以及减少代码冗余. wpf 进行样式继承时,需要使用style的BasedOn属性 ...

  8. nodejs调用delphi编写的dll

    公司的业务需要,nodejs要读取文件版本号. 同事要求我用delphi编写dll,以供nodejs调用,结果通过json返回. delphi代码如下: function GetFileInfo(AP ...

  9. Levenberg-Marquardt优化算法以及基于LM的BP-ANN

    一.LM最优化算法     最优化是寻找使得目标函数有最大或最小值的的参数向量.根据求导数的方法,可分为2大类.(1)若f具有解析函数形式,知道x后求导数速度快.(2)使用数值差分来求导数.根据使用模 ...

  10. LoadRunner 12 模拟 RSA加密 登录的实现(JS)

    LR 12 中 web_js_run API 非常坑,只能调用一个 JS 文件:更坑的是,不能通用 一个JS调用另外一个JS:(可能有,但在网上找了N个国家,都没有找到!如有,还请朋友告之,谢谢.) ...