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');
}