key = $key; $this->date_arr = $date_arr; } //格式化数据 public function columnFormats(): array { return [ 'D' => NumberFormat::FORMAT_NUMBER_00, //金额保留两位小数 'E' => NumberFormat::FORMAT_NUMBER_00, //金额保留两位小数 ]; } /** * sheet数据 * @return \Illuminate\Support\Collection */ public function collection() { $rows = [ ["深圳福恋智能信息科技有限公司 福恋小程序会员收款明细表", '', '', ''], ['ID',"订单号", '商品名册好难过', '订单金额', '订单退款金额', '微信上手续费', '提现手续费', '订单时间', '月份'] ]; foreach ($this->date_arr as $date) { $start_date = $date['start_date']; $end_date = $date['end_date']; $date = date('m', strtotime($start_date)); $orders = Order::with('refundOrders')->where('pay_status','PAID')->whereBetween('created_at', [$start_date, $end_date])->get(); $sum = 0; foreach ($orders as $order) { $refund_price = $order->refundOrders->sum('refund_fee'); $sum += $order->price; $rows[] = [$order->id, $order->trade_no, $order->goods,$order->price, $refund_price, 0.006, 0, $order->created_at, $date]; } if ($sum) { $rows[] = ['','','合计', $sum, '', '', '', '', '']; } } return collect($rows); } public function registerEvents(): array { $sum = 0; foreach ($this->date_arr as $date) { $start_date = $date['start_date']; $end_date = $date['end_date']; $orders = Order::with('refundOrders')->where('pay_status','PAID')->whereBetween('created_at', [$start_date, $end_date])->get(); $count = count($orders); if ($count) { $count = $count +1; } $sum = $sum + $count; } return [ AfterSheet::class => function(AfterSheet $event) use($sum){ //设置列宽 $arr = ['A','B','C','D','E','F',"G","H",'I']; foreach ($arr as $value) { $event->sheet->getDelegate()->getColumnDimension($value)->setWidth(20); } //自动换行 $event->sheet->getStyle("A1:F1")->getAlignment()->setWrapText(TRUE); $event->sheet->getDelegate()->getRowDimension(1)->setRowHeight(80); //设置行高,$i为数据行数 for ($i = 2; $i<=1265; $i++) { $event->sheet->getDelegate()->getRowDimension($i)->setRowHeight(30); } //设置区域单元格垂直居中 $event->sheet->getDelegate()->getStyle('A1:K1265')->getAlignment()->setVertical('center'); //设置区域单元格水平居中 $event->sheet->getDelegate()->getStyle('A1:K1265')->getAlignment()->setHorizontal('center'); //设置区域单元格字体、颜色、背景等,其他设置请查看 applyFromArray 方法,提供了注释 $event->sheet->getDelegate()->getStyle('A2:I'.($sum+2))->applyFromArray([ 'borders'=> [ 'allBorders' => [ 'borderStyle' =>'thin', ] ] ]); $event->sheet->getDelegate()->getStyle('A1:I1')->applyFromArray([ 'font' => [ 'name' => '宋体', 'bold' => false, 'italic' => false, 'strikethrough' => false, 'size' => 14, 'color' => [ 'rgb' => '000000' ], ] ]); $event->sheet->getDelegate()->getStyle('A2:I1080')->applyFromArray([ 'font' => [ 'name' => '宋体', 'bold' => false, 'italic' => false, 'strikethrough' => false, 'size' => 11, 'color' => [ 'rgb' => '000000' ], ] ]); //合并单元格 $event->sheet->getDelegate()->mergeCells('A1:I1'); // $event->sheet->getDelegate()->mergeCells('D'.($data[0]).':E'.($data[0])); // $event->sheet->getDelegate()->mergeCells('D'.($data[1]).':E'.($data[1])); // $event->sheet->getDelegate()->mergeCells('D'.($data[2]).':E'.($data[2])); } ]; } /** * sheet标题 * @return string */ public function title(): string { return "第".($this->key + 1)."季度福恋程序会员收款明细表"; } }