PHPExcel+ajax

这篇博客记录了作者如何结合PHPExcel库和Ajax技术,经过两个小时的努力,成功实现了后台数据到Excel文件的导出过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天搞PHPExcel+ajax 整了两个小时才弄好,现在我就贴代码记录一下

PHP CODE:



    public function order_list_excel(){
        require_once '/var/www/xfsz/ThinkPHP/Library/Org/Excel/PHPExcel.php';
        $excel = new \PHPExcel();
        $excel->getProperties()->setCreator("Puppy");
        $excel->getProperties()->setTitle('User');
        $excel->getProperties()->setSubject("testForExportExcel");
        $excel->setActiveSheetIndex(0);
        $excel->setActiveSheetIndex()->setTitle("Excel");

        $search = urldecode(I('search'));

        if($search != ''){
            $where = "and a.create_at BETWEEN UNIX_TIMESTAMP('$search 00:00:00') and UNIX_TIMESTAMP('$search 23:59:59')";

        }

        $form = M("order")
            ->where("state in (40,10) $where")
            ->order("create_at desc")
            ->select();

    
        $excel->setActiveSheetIndex(0)
            ->setCellValue('A1', "订单编号")
            ->setCellValue('B1', '创建时间')
        ;

    
       for($i=0;$i<count($form);$i++){

            if($form[$i]['id']!=null){
                $excel->getActiveSheet(0)->setCellValue('A'.($i+2),"'".$form[$i]['id']); 
                $excel->getActiveSheet(0)->setCellValue('B'.($i+2),"'".$form[$i]['create_at']);
            }

        }

      
        $excel->getActiveSheet()->getColumnDimension('A')->setWidth('22');
        $excel->getActiveSheet()->getColumnDimension('B')->setWidth('31');

        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="订单列表.xls"');
        header('Cache-Control: max-age=0');
        header('Cache-Control: max-age=1');
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
        header('Cache-Control: cache, must-revalidate');
        header('Pragma: public');


        $objWriter = new \PHPExcel_Writer_Excel5($excel);

        $filename = build_order_no();

        $path = "Public/uploads/".$filename.".xls";
        $objWriter->save($path);

        $res = array(
            'code' => 0
        , 'msg' => ''
        , 'filename' => $filename
        , 'path' => $path
        );

        $this->ajaxReturn($res);

    }

HTML CODE:

<form >

    <button id="excelform" style="width: 20;height: 30px;margin-top: 5px;margin-left: 10px;">导出</button>

</form>

JQ CODE:

  <script>

        $(document).ready(function() {

             /*
                导出按钮的点击事件
             */

            $("#excelform").click(function(event){
                var searchdate = $("#searchdate").val();

                $.ajax({
                    type:"get",
                    async:false,
                    url:"/admin/manage/order_list_excel",
                    data:{ search: searchdate},
                    //dataType:"json",
                    success:function(res){
                       console.log(res);
                        var filename = res.filename+'.xls';
                        var path = '/'+res.path;

                        var a = $("<a>");
                        a.attr("href", path);
                        a.attr("download",'订单列表');
                        $("body").append(a);
                        a[0].click();
                        a.remove();

                    }

                })

                return false;

            })

        })

    </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值