laravel excel导出功能

1. composer.json文件中加入

"require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.1.*",
        "symfony/security-acl": "^2.7",
        "doctrine/dbal": "^2.5",
        "qiniu/php-sdk": "^7.0",
        "guzzlehttp/guzzle": "~6.0",
        "aferrandini/phpqrcode": "^1.0",
        "maatwebsite/excel": "^2.1"
    },


2. controller中使用Excel

use Excel

public function getExport(Request $request)
    {
        $this->checkAcl('view');


        $offerId = $request->input('offer_id');


        if ($offerId) {
            $offerHistory = CouponOfferHistory::find($offerId);
        }


        if (!isset($offerHistory) || $offerHistory->status != CouponOfferHistory::STATUS_SUCCESS) {
            abort(403);
        }


        $query = Coupon::with(['couponTemplate'])
            ->select([
                'coupon_id',
                'coupon_template_id',
                'code',
                'user_id',
                'is_used',
                'activated',
                'used',
            ])
            ->where('coupon_offer_history_id', $offerId);


        $query->orderBy('coupon_id', 'asc');


        $filename = '抵用券码-#' . $offerHistory['coupon_offer_history_id'];
        $header = [
            'coupon_id' => '抵用券编号',
            'code' => '抵用券码',
            'name' => '名称',
            'type' => '类型',
            'discount' => '折扣额度',
            'subtotal_limit' => '最低订单金额',
            'start_datetime' => '开始时间',
            'end_datetime' => '结束时间',
            'user_id' => '激活用户',
            'activated' => '激活时间',
            'is_used' => '是否已使用',
            'used' => '使用时间',
        ];


        Excel::create($filename, function ($excel) use ($header, $query) {
            $excel->sheet('抵用券列表', function ($sheet) use ($header, $query) {
                $sheet->row(1, $header);
                $sheet->row(1, function ($row) {
                    $row->setFontWeight('bold');
                });


                $limit = 200;
                $query->chunk($limit, function ($rows) use ($sheet, $header) {
                    foreach ($rows as $row) {
                        $row['name'] = $row->couponTemplate['name'];
                        $row['type'] = trans('coupon.type.' . $row->couponTemplate['type']);
                        $discount = $row->couponTemplate['discount'];
                        $row['discount'] = $discount . ($row->couponTemplate['is_percentage'] ? '%' : '');
                        $row['subtotal_limit'] = $row->couponTemplate['subtotal_limit'];
                        $row['start_datetime'] = $row->couponTemplate['start_datetime'];
                        $row['end_datetime'] = $row->couponTemplate['end_datetime'];
                        $row['is_used'] = $row['is_used'] ? '是' : '否';


                        $data = [];
                        foreach ($header as $key => $value) {
                            $data[] = $row[$key];
                        }


                        $sheet->appendRow($data);
                    }
                });
            });
        })->export('xlsx');
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值