PHP:PHPExcel 导出方法

By kcersing , 17 六月, 2020

 方式一:
        ob_end_clean();
        ob_start();
        \moonland\phpexcel\Excel::export([
            'models' => $lists,
            'fileName' => '订单记录',
            'columns' => [
                'name',
                'mobile' ,
                'card_name' ,
                'all_price' ,
                'net_price' ,
                'deposit' ,
                'sell_people_name' ,
                'order_number' ,
                'note' ,
                'purchase_num' ,
                'order_time',
                'business_detail_type_name',
                'order_status_name' ,
                'venue_name' ,
                'payee_name' ,
            ],
            'headers' => [
                'name'=> "会员名称",
                'mobile' => "会员手机号",
                'card_name' => "商品名",
                'all_price' => "订单金额",
                'net_price' => "实付金额",
                'deposit' => "使用定金",
                'sell_people_name' => "销售名称",
//                'pay_people_name' => '购买人',
                'order_number' => '订单编号',
//                'card_number' => '会员卡号',
                'note' => '业务行为',
                'purchase_num' => '数量',
                'order_time' => '日期',
                'business_detail_type_name'=>'订单类型',
                'order_status_name' => '订单状态',
                'venue_name' => "场馆名称",
                'payee_name' => '操作人',
            ]
        ]);
        ob_clean();
        return;
 方式二:
        $objPHPExcel = new \PHPExcel();
        $objPHPExcel->setActiveSheetIndex(0);
        $objActSheet = $objPHPExcel->getActiveSheet();
        //设置当前活动sheet的名称
        $objActSheet->setTitle('Sheet1');
        $objActSheet->getDefaultRowDimension()->setRowHeight(18);#设置单元格行高
        $objActSheet->getColumnDimension('A')->setWidth(8);#设置单元格宽度
        $objActSheet->getColumnDimension('B')->setWidth(20);
        $objActSheet->getColumnDimension('C')->setWidth(20);
        $objActSheet->getColumnDimension('D')->setWidth(20);
        $objActSheet->getColumnDimension('E')->setWidth(20);
        $objActSheet->getColumnDimension('F')->setWidth(20);
        $objActSheet->getColumnDimension('G')->setWidth(20);
        $objActSheet->getColumnDimension('H')->setWidth(30);
        $objActSheet->getColumnDimension('I')->setWidth(20);
        $objActSheet->getColumnDimension('J')->setWidth(20);
        $objActSheet->getColumnDimension('K')->setWidth(20);
        $objActSheet->getColumnDimension('L')->setWidth(20);
        $objActSheet->getColumnDimension('M')->setWidth(20);
        $objActSheet->getColumnDimension('N')->setWidth(20);
        $objActSheet->getColumnDimension('O')->setWidth(20);
        //设置居中
        $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
        // 标题行
        $objActSheet->setCellValue('A1', '会员名称');
        $objActSheet->setCellValue('B1', '会员手机号');
        $objActSheet->setCellValue('C1', '商品名');
        $objActSheet->setCellValue('D1', '订单金额');
        $objActSheet->setCellValue('E1', '实付金额');
        $objActSheet->setCellValue('F1', '使用定金');
        $objActSheet->setCellValue('G1', '销售名称');
        $objActSheet->setCellValue('H1', '订单编号');
        $objActSheet->setCellValue('I1', '业务行为');
        $objActSheet->setCellValue('J1', '数量');
        $objActSheet->setCellValue('K1', '日期');
        $objActSheet->setCellValue('L1', '订单类型');
        $objActSheet->setCellValue('M1', '订单状态');
        $objActSheet->setCellValue('N1', '场馆名称');
        $objActSheet->setCellValue('O1', '操作人');
        $objPHPExcel->getActiveSheet()->getStyle('A')->getNumberFormat()
            ->setFormatCode(\PHPExcel_Cell_DataType::TYPE_STRING );
        $h=[
            'A'=> 'name',
            'B' => 'mobile' ,
            'C' => 'card_name' ,
            'D'=> 'all_price' ,
            'E' =>  'net_price' ,
            'F' =>  'deposit' ,
            'G' =>  'sell_people_name' ,
            'H' => 'order_number' ,
            'I'   => 'note' ,
            'J' => 'purchase_num' ,
            'K' => 'order_time',
            'L'  => 'business_detail_type_name',
            'M'  => 'order_status_name' ,
            'N' => 'venue_name' ,
            'O'  => 'payee_name' ,
        ];
        $i=2;
        foreach ($lists as $k => $item) {
            foreach ($h as $kh => $v){
                $objActSheet->setCellValue($kh . $i,empty( $item[$h[$kh]])?'': $item[$h[$kh]]);
            }
            $i++;
        }
        unset($i);
        $filename = "订单.xls";
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
//        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');
//        return ;
        ob_start();
        $objWriter->save("php://output");
        $xlsData = ob_get_contents();
        ob_end_clean();
        return json_encode(['filename' => $filename, 'file' => "data:application/vnd.ms-excel;base64," . base64_encode($xlsData)]) ;
    前端:
                $('.download').click(function(){
                    var url = "http://xxxx.com/xxx-export";
                    var params = {
                           date: date,
                   };
                    $.ajax({
                      type:'POST',
                      url: url,
                      data: params,
                      beforeSend: function(request) {
                        request.setRequestHeader("Authorization", "token信息,验证身份");
                      },
                      success: function(redata) {
                        // 创建a标签,设置属性,并触发点击下载
                        var $a = $("<a>");
                        $a.attr("href", redata.data.file);
                        $a.attr("download", redata.data.filename);
                        $("body").append($a);
                        $a[0].click();
                        $a.remove();
                      }
                    });
                });


标签