اذهب إلى المحتوى
  • 0

تصدير بيانات إلى Excel في Laravel

Hafsa Aly

السؤال

Recommended Posts

  • 1

بإمكانك إستخدام حزمة Maatwebsite / Laravel-Excel لتحقيق ذلك:

حتى تعمل الحزمة بالشكل المطلوب لديها بعض المتطلبات:

PHP: ^7.2\|^8.0
Laravel: ^5.8
PhpSpreadsheet: ^1.15
PHP extension php_zip enabled
PHP extension php_xml enabled
PHP extension php_gd2 enabled
PHP extension php_iconv enabled
PHP extension php_simplexml enabled
PHP extension php_xmlreader enabled
PHP extension php_zlib enabled

تثبيت الحزمة:

composer require maatwebsite/excel

يُمكنك تسجيل مزود الخدمة الخاص بالحزمة بنفسك إن أردت في ملف config/app.php:

'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]

و حفظ الإسم المستعار في المصفوفة aliases:

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

هاتين الخطوتين ليستا ضروريتان لأن الحزمة auto-discovered.

لنشر ملف الإعدادات الخاص بالحزمة في مجلد الإعدادات:

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config

تدعم الحزمة التصدير و الإستيراد من و إلى قاعدة البيانات،

مثال بسيط لتصدير سجلات النموذج User:

نقوم بإنشاء صنف عن طريق الأمر:

php artisan make:export UsersExport --model=User

سنجد مجلد جديد بالإسم Exports في المجلد app و بداخله الملف UsersExport.php و أي صنف ننُشؤه لاحقاً بنفس الأمر نجده في نفس المسار.

نقوم بملء الملف بالشكل التالي:

<?php

namespace App\Exports;

use App\Models\User;
use Maatwebsite\Excel\Concerns\FromCollection;

class UsersExport implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}

يُمكن التصدير من مجموعة (Collection) او من إستعلام أو من صفحة عرض و كل الطرق مشروحة في توثيق الحزمة.

في المتحكم المسؤول نقوم بإنشاء دالة جديدة بالشكل التالي:

<?php

namespace App\Http\Controllers;

use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;

class UsersController extends Controller 
{
    public function export() 
    {
        return Excel::download(new UsersExport, 'users.xlsx');
    }
}

ثم ننُشئ المسار الذي من خلاله نصل الى الدالة export:

Route::get('users/export/', 'UsersController@export');

الآن بإمكانك إنشاء زر للوصول إلى المسار او يُمكنك تصفح الرابط مباشرة من المتصفح و سيتم تحميل ملف إكسل بالإسم users.xlsx. يحتوي على البيانات.

بإمكانك الإطلاع على التوثيق الرسمي للحزمة للإطلاع على الأمر بشكل موسع: Laravel Excel

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 3 ساعات قال عبود سمير:

بإمكانك إستخدام حزمة Maatwebsite / Laravel-Excel لتحقيق ذلك:

حتى تعمل الحزمة بالشكل المطلوب لديها بعض المتطلبات:


PHP: ^7.2\|^8.0
Laravel: ^5.8
PhpSpreadsheet: ^1.15
PHP extension php_zip enabled
PHP extension php_xml enabled
PHP extension php_gd2 enabled
PHP extension php_iconv enabled
PHP extension php_simplexml enabled
PHP extension php_xmlreader enabled
PHP extension php_zlib enabled

تثبيت الحزمة:


composer require maatwebsite/excel

يُمكنك تسجيل مزود الخدمة الخاص بالحزمة بنفسك إن أردت في ملف config/app.php:


'providers' => [
    /*
     * Package Service Providers...
     */
    Maatwebsite\Excel\ExcelServiceProvider::class,
]

و حفظ الإسم المستعار في المصفوفة aliases:


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

هاتين الخطوتين ليستا ضروريتان لأن الحزمة auto-discovered.

لنشر ملف الإعدادات الخاص بالحزمة في مجلد الإعدادات:


php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config

تدعم الحزمة التصدير و الإستيراد من و إلى قاعدة البيانات،

مثال بسيط لتصدير سجلات النموذج User:

نقوم بإنشاء صنف عن طريق الأمر:


php artisan make:export UsersExport --model=User

سنجد مجلد جديد بالإسم Exports في المجلد app و بداخله الملف UsersExport.php و أي صنف ننُشؤه لاحقاً بنفس الأمر نجده في نفس المسار.

نقوم بملء الملف بالشكل التالي:


<?php

namespace App\Exports;

use App\Models\User;
use Maatwebsite\Excel\Concerns\FromCollection;

class UsersExport implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}

يُمكن التصدير من مجموعة (Collection) او من إستعلام أو من صفحة عرض و كل الطرق مشروحة في توثيق الحزمة.

في المتحكم المسؤول نقوم بإنشاء دالة جديدة بالشكل التالي:


<?php

namespace App\Http\Controllers;

use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;

class UsersController extends Controller 
{
    public function export() 
    {
        return Excel::download(new UsersExport, 'users.xlsx');
    }
}

ثم ننُشئ المسار الذي من خلاله نصل الى الدالة export:


Route::get('users/export/', 'UsersController@export');

الآن بإمكانك إنشاء زر للوصول إلى المسار او يُمكنك تصفح الرابط مباشرة من المتصفح و سيتم تحميل ملف إكسل بالإسم users.xlsx. يحتوي على البيانات.

بإمكانك الإطلاع على التوثيق الرسمي للحزمة للإطلاع على الأمر بشكل موسع: Laravel Excel

شكرا لك . هل استطيع عمل filter  مع التصدير

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 24 دقائق مضت قال Hafsa Aly:

هل هناك طريقة اخرى لعمل التصدير باستخدام js

يُمكنك إستخدام حزمة DataTables فهي سهلة و بسيطة و توفر التصدير لعدة أشكال. كما يوجد عدة بدائل يُمكنك الوصول إليها بإستخدام محرك البحث بكتابة:

javascript export data to excel

و هذا مثال على codepen يستخدم مكتبة table-to-excel:

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...