مارک پلاس

تکنولوژی نوین اینترنتی

Laravel Excel - مدیریت فایل‌های اکسل

دسته‌بندی‌ها

Laravel Excel - مدیریت فایل‌های اکسل
Laravel Excel - مدیریت فایل‌های اکسل

حالا بریم سراغ یکی از پکیج‌های فوق‌العاده محبوب در لاراول برای کار با فایل‌های اکسل:

📊 Laravel Excel

توسط Maatwebsite ساخته شده و بر پایه PHPSpreadsheet عمل می‌کنه.


📦 نصب پکیج

bash
composer require maatwebsite/excel

(لاراول 9 به بالا کاملاً سازگاره)


📁 ایجاد Export (خروجی گرفتن از اکسل)

1. ساخت کلاس Export:

bash
php artisan make:export UsersExport --model=User

2. محتوای کلاس 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(); } }

3. استفاده در کنترلر:

php
use App\Exports\UsersExport; use Maatwebsite\Excel\Facades\Excel; public function export() { return Excel::download(new UsersExport, 'users.xlsx'); }

📥 ایجاد Import (ورودی گرفتن فایل اکسل)

1. ساخت کلاس Import:

bash
php artisan make:import UsersImport --model=User

2. محتوای UsersImport.php:

php
namespace App\Imports; use App\Models\User; use Maatwebsite\Excel\Concerns\ToModel; class UsersImport implements ToModel { public function model(array $row) { return new User([ 'name' => $row[0], 'email' => $row[1], 'password' => bcrypt($row[2]), ]); } }

3. استفاده در کنترلر:

php
use App\Imports\UsersImport; use Maatwebsite\Excel\Facades\Excel; public function import(Request $request) { Excel::import(new UsersImport, $request->file('file')); return back()->with('success', 'کاربران با موفقیت وارد شدند!'); }

🧰 امکانات اضافی

ویژگیتوضیح
WithHeadingsبرای داشتن سطر عنوان در Import/Export
WithMappingبرای شخصی‌سازی خروجی
ToCollectionبه‌جای مدل، اطلاعات به صورت Collection دریافت میشه
chunkSizeخواندن فایل در بخش‌های کوچک برای عملکرد بهتر
✅ کار با CSV و XLSX و XLSفرمت‌های متنوع پشتیبانی میشه

✨ مثال با هدر

php
use Maatwebsite\Excel\Concerns\WithHeadings; class UsersExport implements FromCollection, WithHeadings { public function collection() { return User::select('id', 'name', 'email')->get(); } public function headings(): array { return ['ID', 'نام', 'ایمیل']; } }

🛠 مسیر آپلود فایل در فرم Blade

blade
<form action="{{ route('import') }}" method="POST" enctype="multipart/form-data"> @csrf <input type="file" name="file"> <button type="submit">آپلود فایل اکسل</button> </form>

📁 جمع‌بندی

عملیاتدستور
نصب پکیجcomposer require maatwebsite/excel
ساخت Exportphp artisan make:export
ساخت Importphp artisan make:import
Export به اکسلExcel::download(...)
Import از اکسلExcel::import(...)

محتوای مرتبط

پست‌های مرتبط