php将数据导出excel和txt并自动下载

1.导出excel

登录Xshell,cd 项目根目录

利用composer安装phpexcel库类,composer require phpoffice/phpexcel

这个东西安装很慢,建议安装前先切换到国内composer源

参考:http://blog.qvnidaye.com/index.php/Home/Index/article/aid/82

鼎云博客

      依赖库类安装完以后,上php

    
    //引入依赖
    use PHPExcel;
    use PHPExcel_Writer_Excel5;

      
    //控制器
    public function out($ids = null){
        $result = $this->model->field('km,isuse,type_id')->order('id asc')->select();
        if(!$result) return false;
        $type = Db::name('flow_tc')->where(['id'=>$result[0]['type_id']])->value('content');
        //设置文件名称
        $filename = $type . '--' . $ids;
        $objPHPExcel = new PHPExcel();
        //设置保存版本格式
        $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
        //设置表头
        $objPHPExcel->getActiveSheet()->setCellValue('A1','卡密');
        $objPHPExcel->getActiveSheet()->setCellValue('B1','套餐描述');
        $objPHPExcel->getActiveSheet()->setCellValue('C1','当前状态');
        //改变此处设置的长度数值
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(25);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
        //输出表格
        foreach ($result as $key => &$val) {
            $i=$key+2;//表格是从2开始的
            $status = ($val['isuse'] == 0) ? '未使用' : '已激活';
            $objPHPExcel->getActiveSheet()->setCellValue('A'.$i,$val['km']);
            $objPHPExcel->getActiveSheet()->setCellValue('B'.$i,$type);
            $objPHPExcel->getActiveSheet()->setCellValue('C'.$i,$status);
        }
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
        header("Content-Type:application/force-download");
        header("Content-Type:application/vnd.ms-execl");
        header("Content-Type:application/octet-stream");
        header("Content-Type:application/download");
        header('Content-Disposition:attachment;filename='.$filename.'.xls');
        header("Content-Transfer-Encoding:binary");
        $objWriter->save('php://output');
    }


2.导出txt

导出txt并且自动下载的需求,没什么好说的直接上代码吧

   

    
    //控制器
    public function txt($ids = null){
        $result = $this->model->field('km,type_id')->order('id asc')->select();
        if(!$result) return false;
        $type = Db::name('flow_tc')->where(['id'=>$result[0]['type_id']])->value('content');
        //设置文件名称
        $filename = $type . '--' . $ids;
        $content = '';
        foreach ($result as $item) {
            $content .= $item['km'] . "\r\n";
        }
        Header("Content-type:application/octet-stream");
        Header("Accept-Ranges:bytes");
        header("Content-Disposition:attachment;filename={$filename}.txt");
        header("Expires:0");
        header("Cache-Control:must-revalidate,post-check=0,pre-check=0 ");
        header("Pragma:public");
        echo $content;
    }


3.最后,直接通过url请求控制器即可实现自动下载啦

下载效果:

鼎云博客

鼎云博客

鼎云博客

鼎云博客
  • 最新评论
  • 总共0条评论