zoukankan      html  css  js  c++  java
  • PHPExcel使用-使用PHPExcel导出文件-导出MySQL数据

    现在数据库里面有一组数据,我们将它按照不同的难度进行分sheet.

    首先我们需要写一个mysql的配置文件- db.config.php(utf-8编码) :

    <?php

      $dbconfig= array(

        'host'        => '127.0.0.1',

        'username' => 'root',

        'password' => '',

        'database'  => 'xxx',

        'charset'    => 'utf8'

      );

    ?>

    再创建一个php操作mysql数据库的文件 db.php(utf-8编码):

    <?php

      require dirname(__FILE__).'/db.config.php'; //引入配置文件

      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'],$this->conn) or die (mysql_error()); //选择数据库

          mysql_query('set names '.$config['charset']) or die (mysql_error()); //设定mysql编码

        }

        public function getResult($sql){

          $resource = mysql_query($sql,$this->conn) or die (mysql_error()); //查询sql语句

          $res = array();

          while($row=mysql_fetch_assoc($resource)){

            $res[] = $row;

          }

          return $res;

        }

        public function getDataByApply($n){

          $sql = 'select id,name,description from cp_schools where apply='.$n.'order by id desc';

          $res = self::getResult($sql);

          return $res;

        }

      }

    ?>

    准备工作差不多了,那么开始编写导出mysql数据的代码。创建文件 export.php(utf-8编码):

    <?php

    $dir = dirname(__FILE__); //查找当前脚本所在路径

    require $dir.'/db.php'; //引入mysql操作类文件

    require $dir.'/PHPExcel/PHPExcel.php'; //引入PHPExcel

    $db = new db($config); //实例化db类 链接数据库

    $objPHPExcel = new PHPExcel(); //实例化PHPExcel类,等同于在桌面上新建一个excel

    for($i=0;$i<=3;$i++){

      //由于PHPExcel默认会创建一个序号为0的内置Sheet

      if($i>0){

        $objPHPExcel->createSheet(); //创建新的内置表

      }

      $objPHPExcel->setActiveSheetIndex($i); //把新创建的sheet设定为当前活动sheet

      $objSheet = $objPHPExcel->getActiveSheet(); //获取当前活动sheet

      $objSheet->setTitle('难度'.$i); //给当前活动sheet取个名称

      $data = $db->getDataByApply($i); //查询不同难度的院校

      $objSheet->setCellValue('A1','编号')->setCellValue('B1','名称')->setCellValue('C1','描述'); //填充数据

      $j=2;

      foreach($data as $key=>$val){

        $objSheet->setCellValue('A'.$j,$val['id'])->setCellValue('B'.$j,$val['name'])->setCellValue('C'.$j,$val['description']);

        $j++;

      }

    }

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); //生成excel文件

    $objWriter->save($dir.'/export_mysql.xls'); //保存文件

    ?>

    最后,输出至浏览器:

    <?php

      require dirname(__FILE__).'db.config.php'; //引入配置文件

      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'],$this->conn) or die (mysql_error()); //选择数据库

          mysql_query('set names'.$config['charset']) or die (mysql_error()); //设定mysql编码

        }

        public function getResult($sql){

          $resource = mysql_query($sql,$this->conn) or die (mysql_error()); //查询sql语句

          $res = array();

          while($row=mysql_fetch_assoc($resource)){

            $res[] = $row;

          }

          return $res;

        }

        public function getDataByApply($n){

          $sql = 'select id,name,description from cp_schools where apply='.$n.'order by id desc';

          $res = self::getResult($sql);

          return $res;

        }

      }

    ?>

    准备工作差不多了,那么开始编写导出mysql数据的代码。创建文件 export.php(utf-8编码):

    <?php

    $dir = dirname(__FILE__); //查找当前脚本所在路径

    require $dir.'/db.php'; //引入mysql操作类文件

    require $dir.'/PHPExcel/PHPExcel.php'; //引入PHPExcel

    $db = new db($config); //实例化db类 链接数据库

    $objPHPExcel = new PHPExcel(); //实例化PHPExcel类,等同于在桌面上新建一个excel

    for($i=0;$i<=3;$i++){

      //由于PHPExcel默认会创建一个序号为0的内置Sheet

      if($i>0){

        $objPHPExcel->createSheet(); //创建新的内置表

      }

      $objPHPExcel->setActiveSheetIndex($i); //把新创建的sheet设定为当前活动sheet

      $objSheet = $objPHPExcel->getActiveSheet(); //获取当前活动sheet

      $objSheet->setTitle('难度'.$i); //给当前活动sheet取个名称

      $data = $db->getDataByApply($i); //查询不同难度的院校

      $objSheet->setCellValue('A1','编号')->setCellValue('B1','名称')->setCellValue('C1','描述'); //填充数据

      $j=2;

      foreach($data as $key=>$val){

        $objSheet->setCellValue('A'.$j,$val['id'])->setCellValue('B'.$j,$val['name'])->setCellValue('C'.$j,$val['description']);

        $j++;

      }

    }

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); //生成excel文件

    browser_export('Excel5','brower_excel03.xls'); //输出到浏览器

    $objWriter->save('php://output');

    //输出至浏览器 代码 首先找到下载的PHPExcel->Examples->01simple-download-xls.php 或者 01simple-download-xlsx.php

    //这里的两个文件分别是教会我们如何将 Excel5 和 Excel2007 输出至浏览器的代码

    function browser_export($type,$filename){

      if($type == 'Excel5'){

      // Redirect output to a client’s web browser (Excel5)

      header('Content-Type: application/vnd.ms-excel'); //告诉浏览器将要输出excel03文件

      header('Content-Disposition: attachment;filename="'.$filename.'"'); //告诉浏览器将要输出文件的名称

      header('Cache-Control: max-age=0'); //禁止浏览器缓存

      } else if($type == 'Excel2007') {

      // Redirect output to a client’s web browser (Excel2007)

      header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); //告诉浏览器将要输出excel07文件

      header('Content-Disposition: attachment;filename="'.$filename.'"'); //告诉浏览器将要输出文件的名称

      header('Cache-Control: max-age=0'); //禁止浏览器缓存

      }

    }

    ?>

  • 相关阅读:
    项目架构开发:数据访问层之Cache
    微信公众号平台接口开发:菜单管理
    【软件工程】第0次个人作业
    OO第四次博客作业
    OO第三次博客作业
    OO第二次博客作业
    Java学习笔记
    SQLInjection 靶场配置
    OO第一次博客作业
    面向对象先修:Java入门
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/5231177.html
Copyright © 2011-2022 走看看