Excel下载 – Laravel 5.1

我正在使用名为发票,invoiceduedates,payments三个表的雄辩的查询。所有的数据我出口到excel通过使用laravel下面的查询。

$pay=Invoice::with('invoiceduedates','payments')->where('Eventcode','=',$eventcode)->get(); $payment='';$invoicepay=array(); foreach($pay as $payble){ $x=0;$due='';$payment='';$i=0; foreach($payble->invoiceduedates as $duedate){ $x++; $due .= $duedate->date.','.$duedate->amount; if($x <= count($payble->invoiceduedates)-1){ $due.=","; } } foreach($payble->payments as $paydate){ $i++; $payment .= $paydate->adjust_mode.','.$paydate->recieved_amount; if($i <= count($payble->payments)-1){ $payment.=","; } } $invoicepay[]= array_merge(explode(',',$due),explode(',',$payment)); unset($due);unset($payment);unset($i);unset($x); } $export = json_decode(json_encode((array) $invoicepay), true); Excel::create('Data', function($excel) use ($export) { $excel->sheet('Inovice Data', function($sheet) use ($export) { $sheet->fromArray($export); $sheet->cells('A1:AE1', function($cells) { $cells->setBackground('#000000'); $cells->setFontColor('#fff'); }); $sheet->row(1, array( 'Due Date1','Due Amount1','Due Date2','Due Amount2','AdjustMode1','Rcv Amount1','AdjustMode2','Rcv Amount2' )); }); })->download('xlsx'); 

以下是我的excel结果:

 | Due Date1 | Due Amount1 | Due Date2 | Due Amount2 | AdjustMode1 | Rcv Amount1 | AdjustMode2 | Rcv Amount2 | |------------|-------------|-----------------------|-------------|-----------------------|-------------|-----------------------|-------------| | 2016-03-25 | 2000 | 2016-02-29 | 2000 | Overseas Bank Charges | 2000 | Overseas Bank Charges | 2743 | | 2016-03-31 | 3750 | Overseas Bank Charges | 3708 | Overseas Bank Charges | 2750 | | | 

但是,这里发生的情况是,在invoiceduedates表中没有第二个到期日的Due Time2,Due Amount2与Adjust Mode1和RCV Amount1重叠。

实际的Excel如何我想要的是以下

 | Due Date1 | Due Amount1 | Due Date2 | Due Amount2 | AdjustMode1 | Rcv Amount1 | AdjustMode2 | Rcv Amount2 | |------------|-------------|------------|-------------|-----------------------|-------------|-----------------------|-------------| | 2016-03-25 | 2000 | 2016-02-29 | 2000 | Overseas Bank Charges | 2000 | Overseas Bank Charges | 2743 | | 2016-03-31 | 3750 | | | Overseas Bank Charges | 3708 | Overseas Bank Charges | 2750 | 

雅没有第二次到期date我希望这些列是empty.How我可以控制在foreach循环或excel的标题部分? 请帮忙 。

谢谢。

你的问题是你没有给出$export空白空间

所以maatwebsite-excel的 – > fromArray()函数将把数据逐个放入excel

这些代码可以解决您的问题:(部分代码)

  $x=0;$due='';$payment='';$i=0; foreach($payble->invoiceduedates as $duedate){ $x++; $due .= $duedate->date.','.$duedate->amount; if($x <= count($payble->invoiceduedates)-1){ $due.=","; } } //added if($x == 1){ $due.=",,"; //add two empty column for Due Date2 & Due Amount2 } foreach($payble->payments as $paydate){ $i++; $payment .= $paydate->adjust_mode.','.$paydate->recieved_amount; if($i <= count($payble->payments)-1){ $payment.=","; } } //added if($i == 1){ $payment.=",,"; //add two empty column for AdjustMode2 & Rcv Amount2 }