TP5 生成excel并下载

Posted 代码砌墙的小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
    }
    
  }
 
//前端点击下载即可

以上是关于TP5 生成excel并下载的主要内容,如果未能解决你的问题,请参考以下文章

flask 生成excel并下载

tp5--Excel表格导入导出

TP5 生成二维码

TP5导入EXCEL到数据库

原创POI 生成Excel文件并下载

PHP 实时生成并下载超大数据量的 Excel 文件