zoukankan      html  css  js  c++  java
  • TP5 生成excel并下载

    public function excel(){
        /*检测用户是否登陆*/
        $user_id=Finance::islogin();
        if($user_id==0){
          $this->redirect('/index.php/index/User/login');
        }
        Loader::import('PHPExcel.Classes.PHPExcel');
        Loader::import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
        Loader::import('PHPExcel.Classes.PHPExcel.Reader.Excel5');

        $PHPExcel = new PHPExcel(); //实例化一个要保存的phpExcel对象
        $PHPSheet = $PHPExcel->getActiveSheet();
        $PHPSheet->setTitle("piece"); //给当前活动sheet设置名称
        //接收值
        $daterange1 = input("daterange1");
        $daterange2 = input("daterange2");
        $merchant_name = input("merchant_name");
        //查询语句
        $platform = Db::name("platform")
        ->alias('a')
        ->join('order_addition b', 'a.merchant_name = b.DpName')
        ->join('order c', 'c.order_no = b.order_no')
        ->join('order_item d', 'c.order_id = d.order_id')
        ->where("a.merchant_name",$merchant_name)
        ->where('c.created_at', 'between', [$daterange1,$daterange2])
        ->field("b.orderId,c.created_at,d.title,d.prop_name")
        ->select();
        
        $i = 2;
        //标题行
        $PHPSheet->setCellValue("A1",'订单编号')->setCellValue("B1",'订单日期')->setCellValue("C1",'商品名称')->setCellValue("D1",'数量')->setCellValue("E1",'订单交易币种')->setCellValue("F1",'订单总金额')->setCellValue("G1",'收货地址')->setCellValue("H1",'收件人名称')->setCellValue("I1",'承认人')->setCellValue("J1",'物流编号');
        foreach ($platform as $k){
          // $ko = $k;
          //我的是三维数组
          $prop_name = json_decode($k["prop_name"],true);
          $t= "";
          if(is_Array($prop_name)){
            foreach($prop_name as $v){
              $v = join(",",$v);
              if($v=="常规属性"){
                $v = '';
              }
              $temp[] = $v;
              $t.="".$v."".",";
            }
          }
          $PHPSheet->setCellValue("A".$i,$k['orderId'])->setCellValue("B".$i,$k['created_at'])->setCellValue("C".$i,$k['title'].$t); //表格数据
          $i = $i+1;
        }
        
        // die();
        $PHPWriter = PHPExcel_IOFactory::createWriter($PHPExcel,"Excel2007"); //创建生成的格式
        $file_dir = ROOT_PATH . 'public' . DS . 'static' . DS . 'uploads' . DS . 'factory' . DS . 'settlement' . DS . 'settlement.xlsx'; //文件存放目录
          
        $PHPWriter->save($file_dir); //表示在$path路径下面生成demo.xlsx文件
        // return true;
        $file_name = "settlement.xlsx"; //下载文件名
        $file_dir = ROOT_PATH . 'public' . DS . 'static' . DS . 'uploads' . DS . 'factory'  . DS . 'settlement' . DS; //下载文件存放目录
        //检查文件是否存在
        if(!file_exists($file_dir . $file_name)){
            // echo "文件找不到";
            return "文件找不到";
            exit();
        }else{
            //打开文件
            $file1 = fopen($file_dir . $file_name, "r");
            //输入文件标签
            Header("Content-type:application/vnd.ms-excel"); //表示输出的是excel文件
            Header("Accept-Ranges: bytes");
            Header("Accept-Disposition: attachment;filename=" . $file_name);
            ob_clean();
            flush(); //清除文件中多余的路径名以及解决乱码的问题
            echo fread($file1, filesize($file_dir . $file_name));
            fclose($file1);
            exit();
        }
        
      }
     
    //前端点击下载即可
  • 相关阅读:
    Node Js
    动态遍历接收的参数
    负载均衡和springcloud.Ribbon
    Spring Cloud
    springboot整合hibernate
    python模块知识总结
    什么是netty--通俗易懂
    IDEA 的操作与使用
    spring 整合guava
    log4j向指定文件输出日志
  • 原文地址:https://www.cnblogs.com/sunny20/p/14794063.html
Copyright © 2011-2022 走看看