从数据库中导出数据

 

从数据库中导出数据

 

一,进行数据库的配置

 

  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  ?>
dbconfig.php
 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  ?>
db.php
 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  ?>
export.php

 

 

 

    

 

转载于:https://www.cnblogs.com/3-tu/p/6308883.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值