ThinkPHP3.2导出excel

<?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;
  }

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值