گرفتن خروجی Excel از اطلاعات لاراول

ترجمه و تالیف : امیررضا سیستانه ای
تاریخ انتشار : 13 خرداد 98
خواندن در 49 ثانیه
دسته بندی ها : لاراول

اخیرا من دنبال یک راه ساده برای خروجی Excel گرفتن از اطلاعاتم بصورت یک spreadsheet بودم که بتونه بصورت دوره ای به حسابدار شرکت ارائه بشه. در این آموزش من به شما نشان خواهم داد که چطور به آسانی این قابلیت رو در اپلیکیشن لاراول اعمال کنیم.

پکیج Laravel Excel

کتابخانه ی فوق العاده ی PHPExcel یکی از بهترین راه حل ها برای PHP هست و تعدادی از توسعه دهندگان این کتابخانه رو برای لاراول فراهم کردند. با یک جستجوی کوچک می تونید پکیج Laravel Excel ساخته ی MaatWebsite رو پیدا کنید. 

نصب و راه اندازی

برای نصب Laravel Excel از دستور زیر در مسیر اصلی پروژه تون استفاده کنید :

composer require maatwebsite/excel

بعد از اتمام نصب, فایل config/app.php رو باز کنید و بصورت زیر تغییرات رو در آرایه ی providers اعمال کنید :

'providers' => [
    ...
    Maatwebsite\Excel\ExcelServiceProvider::class,
],

و همین کار رو در مورد آرایه ی aliases انجام بدید :

'aliases' => [
    ...
    'Excel'     => Maatwebsite\Excel\Facades\Excel::class,
],

تغییرات رو ذخیره کنید و شما الان برای خروجی Excel گرفتن از اطلاعات آماده اید. بیایید با استفاده از یک مثال ساده جلو بریم. مثل خیلی از توسعه دهندگان ما از فریمورک محبوب بوت استرپ برای ظاهر کار استفاده می کنیم. در مثال زیر ما یک دکمه ی زیبا با عنوان Export to Excel می سازیم و به آدرس URL که مسیر admin.payments.excel تعریف شده اشاره می کنیم :

{!! link_to_route('admin.payments.excel', 
      'Export to Excel', null, 
      ['class' => 'btn btn-info']) 
!!}

برای تعریف مسیر به فایل routes.php برید و خط زیر رو اضافه کنید :

Route::get('/payments/excel', 
[
  'as' => 'admin.invoices.excel',
  'uses' => 'PaymentsController@excel'
]);

پس در این مثال اکشن ()excel در کنترلر Peyments باید شامل منطق خروجی Excel گرفتن باشد. برای مثال میتونه شبیه کد زیر باشه :

public function excel() {

    // Execute the query used to retrieve the data. In this example
    // we're joining hypothetical users and payments tables, retrieving
    // the payments table's primary key, the user's first and last name, 
    // the user's e-mail address, the amount paid, and the payment
    // timestamp.

    $payments = Payment::join('users', 'users.id', '=', 'payments.id')
        ->select(
          'payments.id', 
          \DB::raw("concat(users.first_name, ' ', users.last_name) as `name`"), 
          'users.email', 
          'payments.total', 
          'payments.created_at')
        ->get();

    // Initialize the array which will be passed into the Excel
    // generator.
    $paymentsArray = []; 

    // Define the Excel spreadsheet headers
    $paymentsArray[] = ['id', 'customer','email','total','created_at'];

    // Convert each member of the returned collection into an array,
    // and append it to the payments array.
    foreach ($payments as $payment) {
        $paymentsArray[] = $payment->toArray();
    }

    // Generate and return the spreadsheet
    Excel::create('payments', function($excel) use ($paymentsArray) {

        // Set the spreadsheet title, creator, and description
        $excel->setTitle('Payments');
        $excel->setCreator('Laravel')->setCompany('WJ Gilmore, LLC');
        $excel->setDescription('payments file');

        // Build the spreadsheet, passing in the payments array
        $excel->sheet('sheet1', function($sheet) use ($paymentsArray) {
            $sheet->fromArray($paymentsArray, null, 'A1', false, false);
        });

    })->download('xlsx');
}

این کد باعث میشه به محض کلیک روی دکمه فایل Excel دانلود بشه. 

این یک نمونه از کاریه که Laravel Excel میتونه انجام بده. مستندات کامل این پکیج رو مطالعه کنید.

منبع

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید