一,进行数据库的配置
1,创建文件dbconfig.php.进行数据库连接的配置.
2,新建db.php.进行数据的连接和查询
① 引入配置文件
② 创建构造方法,用户进行数据库的连接
③ 根据传入sql的语句创建查询方法.
④ 根据年级信息进行数据分类查询
二,进行数据导出到Excel
1,引入mysql数据操作类和PHPExcel类
2,实例化引入的操作类和PHPExcel类
3,进行内置表的创建
① 根据年级不同,创建不同的内置表
② 获得内置表进行数据填充
③ 从数据库中根据班级不同获得不同数据
④ 利用foreach循环设置内置表数据
⑤ 创建写入文件对象,并进行文件保存操作
源码部分:
1 <?php 2 /* 3 数据库配置 4 */ 5 $phpexcel = array( 6 ‘host‘=>‘localhost‘, 7 ‘username‘=>‘root‘, 8 ‘password‘=>‘‘, 9 ‘database‘=>‘test‘, 10 ‘charset‘=>‘utf8‘, 11 ); 12 ?>
1 <?php 2 3 //引入配置文件 4 require("./dbconfig.php"); 5 6 class db{ 7 8 public $conn = null; 9 10 //构造方法 11 public function __construct($config){ 12 //连接数据库 13 $this->conn = @mysql_connect($config[‘host‘],$config[‘username‘],$config[‘password‘]) or die(mysql_error()); 14 15 //选择数据库 16 mysql_select_db($config[‘database‘],$this->conn) or die(mysql_error()); 17 18 //设定mysql编码 19 mysql_query("set names ".$config[‘charset‘]) or die(mysql_error()); 20 21 } 22 23 //根据传入的sql语句查询结果集 24 public function getResult($sql){ 25 //进行sql语句查询 26 $resource = mysql_query($sql,$this->conn) or die(mysql_error()); 27 //定义返回的结果集数组 28 $res = array(); 29 //返回从结果集取得的行生成的关联数组 30 while(($row = mysql_fetch_assoc($resource)) != false){ 31 //将数组赋值给$reset(array) 32 $res[] = $row; 33 } 34 //将结果集数组 35 return $res; 36 } 37 38 //根据年级进行数据查询 39 public function getDataByGrade($grade){ 40 $sql = "select username,score,class from user where grade=".$grade." order by score desc"; 41 $result = self::getResult($sql); 42 return $result; 43 } 44 45 } 46 47 48 49 50 ?>
1 <?php 2 3 //引入PHPExcel文件 4 require("./PHPExcel.php"); 5 //引入mysql数据库操作类 6 require("./db.php"); 7 8 //实例化db操作类 9 $db = new db($phpexcel); 10 //实例化PHPExcel对象,相当于创建了一个新的excel 11 $objExcel = new PHPExcel(); 12 13 //内置表的创建 14 for($i = 1; $i <= 3; $i++){ 15 //当不是默认的内置表时,要进行创建 16 if($i > 1){ 17 $objExcel->createSheet(); 18 } 19 //设置当前sheet表 20 $objExcel->setActiveSheetIndex($i-1); 21 //获得当前sheet对象 22 $objSheet = $objExcel->getActiveSheet(); 23 //设置当前sheet名称 24 $objSheet->setTitle($i."年级"); 25 //根据年级获得每个学生的数据 26 $data = $db->getDataByGrade($i); 27 //设置首部信息 28 $objSheet->setCellValue("A1","姓名")->setCellValue("B1","分数")->setCellValue("C1","班级"); 29 //利用循环添加每个学生的数据 30 $j = 2; 31 foreach ($data as $key => $value) { 32 $objSheet->setCellValue("A".$j,$value[‘username‘])->setCellValue("B".$j,$value[‘score‘])->setCellValue("C".$j,$value[‘class‘]."班"); 33 $j++; 34 } 35 36 } 37 //创建写入对象 38 $objWriter = PHPExcel_IOFactory::createWriter($objExcel,‘Excel5‘); 39 browser_export(‘Excel5‘,‘03.xls‘); 40 //*********进行输出 41 $objWriter->save("php://output"); 42 //保存文件 43 // $objWriter->save("./export.xlsx"); 44 45 46 //输出到浏览器 47 function browser_export($type,$filename){ 48 if($type == "Excel5"){ 49 //告诉游览器将要输出excel03文件 50 header(‘Content-Type: applicationnd.ms-excel‘); 51 }else{ 52 //告诉游览器将要输出excel07文件 53 header(‘Content-Type: applicationnd.openxmlformats-officedocument.spreadsheetml.sheet‘); 54 } 55 //告诉游览器将要输出文件的名称 56 header(‘Content-Disposition: attachment;filename="‘.$filename.‘"‘); 57 //禁止缓存 58 header(‘Cache-Control: max-age=0‘); 59 } 60 61 62 63 ?>
原文:http://www.cnblogs.com/3-tu/p/6308883.html