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中的代码
<?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探索之旅---阶段一的更多相关文章
- PHPExcel探索之旅---阶段四 导入文件
步骤就是:实例化excel读取对象=> 加载excel文件 => 读取excel文件(全部读取.逐行读取) <?php header("Content Type :text ...
- PHPExcel探索之旅---阶段三 绘制图表
利用PHPExcel插件进行绘制图表 <?php /** * 使用PHPExcel插件在excel文件中利用其中的数据建立折线图 * */ $dir = dirname(__FILE__); r ...
- PHPExcel探索之旅---阶段二 设置表格样式
1.设置表格的默认样式为水平居中.垂直居中 getDefaultStyle()函数用来设置默认样式 由活动sheet对象来调用,setVertical()函数和setHorizontal()函数分别用 ...
- PHPExcel探索之旅
学习地址: https://www.imooc.com/video/8359 下载地址: https://packagist.org/packages/phpoffice/phpexcel 用comp ...
- 【C语言探索之旅】 第二部分第一课:模块化编程
内容简介 1.课程大纲 2.第二部分第一课: 模块化编程 3.第二部分第二课预告: 进击的指针,C语言王牌 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...
- 【Linux探索之旅】第二部分第二课:命令行,世界尽在掌握
内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:“小编,你为什么每次都要起这么非主 ...
- 【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见
内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是 ...
- 【Web探索之旅】第四部分:Web程序员
内容简介 1.第四部分第一课:什么是Web程序员? 2.第四部分第二课:如何成为Web程序员? 3.第四部分第三课:成为优秀Web程序员的秘诀 第四部分:Web程序员(完结篇) 大家好.终于来到了[W ...
- 【Web探索之旅】第三部分第一课:服务器
内容简介 1.第三部分第一课:服务器 2.第三部分第二课预告:IP地址和域名 第三部分第一课:服务器 大家好,欢迎来到[Web探索之旅]的第三部分.这一部分有不少原理,还是很重要的. 这一部分我们会着 ...
随机推荐
- javascript:delete 删除对象的属性
delete 运算符删除对以前定义的对象属性或方法的引用. 不可以删除的如下: 1通过var定义的变量 var a=1;delete a//false 2 声明后的函数 function a(){}; ...
- bzoj 1001 狼抓兔子 —— 平面图最小割(最短路)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 平面图最小割可以转化成最短路问题: 建图时看清楚题目的 input ... 代码如下: ...
- redis安装及启动及设置
1. 安装 1.1 下载解压包,直接解压到任意路径下即可 windows下载地址:ttps://github.com/MSOpenTech/redis/releases 2.启动 2.1 启动要先开启 ...
- webpy+nginx+uwsgi安装配置
转:(1)安装Nginx1.1 下载nginx-1.0.5.tar.gz并解压1.2 ./configure (也可以增加--prefix= path指定安装路径)此时有可能会提示缺少pcre支持,如 ...
- python xml包 xml.etree.ElementTree使用记录
19.7.1 教程 这是一个简短的教程使用xml.etree.ElementTree(简称为et).目标是展示一些构建模块和模块的基本概念 9.7.1.1. XML tree and elements ...
- POJ 1046 Color Me Less(浅水)
一.Description A color reduction is a mapping from a set of discrete colors to a smaller one. The sol ...
- 图解Stm32使用jlink下载程序时jtag接口(SW和JTAG模式)的简化方法
转自: http://www.it165.net/embed/html/201308/2332.html 用过stm32的人都知道stm32有两种常用下载程序的方法,用串口和jlink.串口下载方法和 ...
- tomcat部署虚拟主机-搭建两个应用以及httpd和Nginx的反向代理
实验环境:CentOS7 前提:已经安装好tomcat,未安装请查看http://www.cnblogs.com/wzhuo/p/7111135.html: 目的:基于主机名访问两个应用: [root ...
- Centos7搭建pptp
废话不多说,先上脚本地址:Centos7一键pptp 使用方法: wget https://raw.githubusercontent.com/DanylZhang/VPS/master/CentOS ...
- Asp.net 实现只能允许一个账号同时只能在一个地方登录
先上帮助类: /// <summary> /// 单点登录帮助类 /// </summary> public class SSOHelper { /// <summary ...