您的位置:首页 > 编程语言 > PHP开发

ThinkPHP3.2导出excel

2014-10-28 08:37 204 查看
<?php

// 本类由系统自动生成,仅供测试用途

namespace Home\Controller;

use Think\Controller;

class IndexController extends Controller {

//导入

    public function index(){

     //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能import导入

  import("Org.Util.PHPExcel");

  //要导入的xls文件,位于根目录下的Public文件夹

  $filename="./Public/1.xls";

  //创建PHPExcel对象,注意,不能少了\

  $PHPExcel=new \PHPExcel();

  //如果excel文件后缀名为.xls,导入这个类

  import("Org.Util.PHPExcel.Reader.Excel5");

  //如果excel文件后缀名为.xlsx,导入这下类

  //import("Org.Util.PHPExcel.Reader.Excel2007");

  //$PHPReader=new \PHPExcel_Reader_Excel2007();

  $PHPReader=new \PHPExcel_Reader_Excel5();

  //载入文件

  $PHPExcel=$PHPReader->load($filename);

  //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推

  $currentSheet=$PHPExcel->getSheet(0);

  //获取总列数

  $allColumn=$currentSheet->getHighestColumn();

  //获取总行数

  $allRow=$currentSheet->getHighestRow();

  //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始

  for($currentRow=1;$currentRow<=$allRow;$currentRow++){

   //从哪列开始,A表示第一列

   for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){

    //数据坐标

    $address=$currentColumn.$currentRow;

    //读取到的数据,保存到数组$arr中

    $arr[$currentRow][$currentColumn]=$currentSheet->getCell($address)->getValue();

   }

  

  }

//打印输出数组

   dump($arr);

    }

//导出文件

 public function out(){

     $data=array(

      array('username'=>'zhangsan','password'=>"123456"),

      array('username'=>'lisi','password'=>"abcdefg"),

      array('username'=>'wangwu','password'=>"111111"),

      );

     //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能import导入

  import("Org.Util.PHPExcel");

  import("Org.Util.PHPExcel.Writer.Excel5");

  import("Org.Util.PHPExcel.IOFactory.php");

  $filename="test_excel";

  $headArr=array("用户名","密码");

  $this->getExcel($filename,$headArr,$data);

 }

 private function getExcel($fileName,$headArr,$data){

   //对数据进行检验

      if(empty($data) || !is_array($data)){

          die("data must be a array");

      }

      //检查文件名

      if(empty($fileName)){

          exit;

      }

      $date = date("Y_m_d",time());

      $fileName .= "_{$date}.xls";

   //创建PHPExcel对象,注意,不能少了\

      $objPHPExcel = new \PHPExcel();

      $objProps = $objPHPExcel->getProperties();

   

      //设置表头

      $key = ord("A");

      foreach($headArr as $v){

          $colum = chr($key);

          $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);

          $key += 1;

      }

     

      $column = 2;

      $objActSheet = $objPHPExcel->getActiveSheet();

      foreach($data as $key => $rows){ //行写入

          $span = ord("A");

          foreach($rows as $keyName=>$value){// 列写入

              $j = chr($span);

              $objActSheet->setCellValue($j.$column, $value);

              $span++;

          }

          $column++;

     }

      $fileName = iconv("utf-8", "gb2312", $fileName);

      //重命名表

      // $objPHPExcel->getActiveSheet()->setTitle('test');

      //设置活动单指数到第一个表,所以Excel打开这是第一个表

      $objPHPExcel->setActiveSheetIndex(0);

      header('Content-Type: application/vnd.ms-excel');

   header("Content-Disposition: attachment;filename=\"$fileName\"");

   header('Cache-Control: max-age=0');

     $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

      $objWriter->save('php://output'); //文件通过浏览器下载

      exit;

  }

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thinkphp 3.2