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();
    }
    
  }
 
//前端點擊下載即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM