0

Laravel 4 と Laravel Excel を使用して mySQL からデータをエクスポートし、これを機能させました。Regtype と Attendee のオブジェクトがあり、関連するすべての出席者を含む regtype ごとに 1 つのシートが必要です。私は素晴らしい輸出をしている出席者のシートを1枚持っていました。これで、regtypes のループが追加され、複数のシートを取得できるようになりましたが、すべてのシートが空白です!

おそらく、shareViewを使用する必要がありますか?私はそうは思いません..エラーは発生せず、ブレード テンプレートに渡すデータは表示されません。

私のエクスポート関数: public function export() { $date = date('Y_m_d'); \Excel::create('CMO_Connect_Attendees_Export_'.$date, function($excel) { $regtypes = Regtype::all(); foreach ($regtypes as $regtype) { if( $regtype->attendees(3)->カウント() ) {

        $excel->sheet($regtype->name,  array('regtype' => $regtype), function($sheet) {
            $date = date('Y_m_d');
            $attendees = new Attendee;

            $atts = Attendee::where('block_id', '=', \Input::get('block_id'))
                ->where('regtype_id', '=', $regtype->id)
                ->get();
                $sheet->setStyle(array(
                    'font' => array(
                        'name'      =>  'Arial',
                        'size'      =>  12,
                        'bold'      =>  false
                    )
                ));
            $sheet->loadView('attendees.export', array('atts' => $atts))->with('curdate',$date)->with('regtype_name',$regtype->name);
            $atts = '';
        });
        } //endif
    } //endforeach

    $excel->export('xls');
    });
}

そして、データを渡すブレード テンプレート (出席者と、シートの上部に表示する regtype の日付と名前を渡します。

<html>
<table>
  <tr>
    <td colspan="11">Attendees Export - {{ $curdate }} - {{ $regtype_name }}</td>
  </tr>
  <tr>
    <td>First Name</td>
    <td>Last Name</td>
    <td>Company</td>
    <td>Title</td>
    <td>Email</td>
    <td>Phone</td>
    <td>Address</td>
    <td>Addres 2</td>
    <td>City</td>
    <td>State</td>
    <td>Zip</td>
    <td>Date Created</td>
  </tr>
@foreach($atts as $att)
  <tr>
    <td> {{ $att->firstname }} </td>
    <td> {{ $att->lastname }} </td>
    <td> {{ $att->company }} </td>
    <td> {{ $att->title }} </td>
    <td> {{ $att->email }} </td>
    <td> {{ $att->phone }} </td>
    <td> {{ $att->address }} </td>
    <td> {{ $att->address2 }} </td>
    <td> {{ $att->city }} </td>
    <td> {{ $att->state }} </td>
    <td> {{ $att->zip }} </td>
    <td> {{ $att->created_at }} </td>
  </tr>
@endforeach
</table>
</html>

助けてくれてありがとう!

4

1 に答える 1

0

私は整理しました-以下は現在のエクスポート機能です。composer を使用してベンダー ファイルを更新し (少し古いバージョンを使用していることに気付きました) use($regtype、メソッドを呼び出すときにコードを修正し$sheetました (regtype オブジェクトをシートに渡します)。データをブレード テンプレートに渡すのと同じ方法で、変数またはオブジェクトをシートに渡すと仮定しましたが、それは正しくありません。

public function export() 
{
    $date = date('Y_m_d');
    \Excel::create('CMO_Connect_Attendees_Export_'.$date, function($excel) {
        $excel->setTitle('CMO Connect Attendee Data Export');
        $excel->setCreator('Dylan Glockler')
              ->setCompany('Bryan Allen Events');
        $excel->setDescription('All attendee event data for Adobe CMO Connect');
    $regtypes = Regtype::all();
    $summary = '';
    foreach ($regtypes as $regtype) {
        if( $regtype->attendees(3)->count() ) {
            $summary = $summary . $regtype->name;
            $summary = $summary . ': '.$regtype->attendees(3)->count();
            $summary = $summary . ' | ' . $regtype->id . '<br />';

            $excel->sheet($regtype->name, function($sheet) use($regtype) {
                $date = date('Y_m_d');
                $atts = Attendee::where('block_id', '=', \Input::get('block_id'))
                    ->where('regtype_id', '=', $regtype->id)
                    ->get();
                    $sheet->setStyle(array(
                        'font' => array(
                            'name'      =>  'Arial',
                            'size'      =>  12,
                            'bold'      =>  false
                        )
                    ));
                $sheet->loadView('attendees.export')->with('curdate',$date)->with('atts',$atts)->with('regtype_name',$regtype->name)->with('att_count',$regtype->attendees(3)->count());
            });
        } //endif
    } //endforeach
    $excel->export('xls');
    });
}
于 2014-10-24T00:10:09.867 に答える