آموزش ایمپورت و اکسپورت کردن فایل اکسل و csv در لاراول 6 ، در یکی دیگر از قسمت های آموزش لاراول 6 ، شما نحوه ایمپورت (import) و اکسپورت (export) کردن یا دریافت خروجی اکسل یا فایل csv در لاراول 6 یاد خواهید گرفت.ما با استفاده از پکیج maatwebsite/excel می توانیم فایل اکسل یا csv را از دیتابیس یا پایگاه داده در برنامه لاراول ایمپورت و اکسپورت کنیم.
در این آموزش ما اسکریپت کامل نحوه ایمپورت کردن فایل csv به دیتابیس در لاراول 6 و همچنین اکسپورت کردن فایل csv از پایگاه داده در لاراول 6 را برای شما خواهیم نوشت.
در این آموزش ما از پکیج maatwebsite/excel برای عمل ایمپورت (import) و اکسپورت (export) کردن استفاده خواهیم کرد.پکیج maatwebsite/excel راهی آسان را برای ایمپورت و اکسپورت کردن با استفاده از مدل دیتابیس را فراهم می کند.
در زمان تهیه این آموزش ورژن 3.1 پکیج maatwebsite/excel ارائه شده است که ما نیز از همین ورژن استفاده کرده ایم.برای یادگیری ایمپورت و اکسپورت کردن فایل اکسل و csv در لاراول 6 کافی است گام های زیر را دنبال کنید.
اول از همه ، ما نیاز داریم نسخه جدید لاراول یعنی لاراول 6 را با استفاده از دستور زیر نصب کنیم. چون ما قصد داریم این مثال را از ابتدا به شما آموزش دهیم.بنابراین ترمینال یا خط فرمان (command prompt) خود را باز کنید و دستور زیر را اجرا کنید:
composer create-project --prefer-dist laravel/laravel blog
در این مرحله ما باید پکیج maatwebsite/exce را نصب کنیم ، بنابراین ترمینال خود را باز کنید و دستور زیر را اجرا کنید:
composer require maatwebsite/excel
اکنون فایل config/app.php را باز کنید و کلاس های زیر را به آرایه های providers و aliases اضافه کنید:
config/app.php
'providers' => [
....
Maatwebsite\Excel\ExcelServiceProvider::class,
],
'aliases' => [
....
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
],
همچنین بخوانید: آموزش middleware در لاراول 6
در این مرحله ما به یک جدول “users” به همراه تعدادی رکورد ساختگی نیاز داریم تا به راحتی بتوانیم عمل ایمپورت و اکسپورت کردن را انجام دهیم.بنابراین ابتدا با استفاده از دستور زیر migration پیش فرض که بوسیله لاراول فراهم شده است را اجرا می کنیم.
php artisan migrate
پس از آن برای ایجاد کاربران ساختگی ما باید دستور زیر را اجرا کنیم:
php artisan tinker
factory(App\User::class, 20)->create();
در این مرحله ما نیاز داریم مسیر ایمپورت و اکسپورت فایل را ایجاد کنیم ، بنابراین فایل routes/web.php را باز کنید و مسیرهای زیر را به آن اضافه کنید:
routes/web.php
Route::get('importExportView', 'MyController@importExportView');
Route::get('export', 'MyController@export')->name('export');
Route::post('import', 'MyController@import')->name('import');
در ورژن 3 پکیج maatwebsite/excel راهی برای ایجاد کلاس ایمپورت ارائه شده است و ما باید از آنها در کنترلر استفاده کنیم.بنابراین این یک راه عالی برای ایجاد کلاس Import جدید خواهد بود.پس دستور زیر را اجرا کرده و کدهای آن فایل را مانند زیر تغییر دهید:
php artisan make:import UsersImport --model=User
app/Imports/UsersImport.php
<?php
namespace App\Imports;
use App\User;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class UsersImport implements ToModel, WithHeadingRow
{
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
return new User([
'name' => $row['name'],
'email' => $row['email'],
'password' => \Hash::make($row['password']),
]);
}
}
شما می توانید دموی فایل csv را از اینجا دانلود کنید: دموی فایل csv.
در ورژن 3 پکیج maatwebsite/excel راهی برای ایجاد کلاس اکسپورت ارائه شده است و ما باید از آنها در کنترلر استفاده کنیم.بنابراین این یک راه عالی برای ایجاد کلاس Export جدید خواهد بود.پس دستور زیر را اجرا کرده و کدهای آن فایل را مانند زیر تغییر دهید:
php artisan make:export UsersExport --model=User
app/Exports/UsersExport.php
<?php
namespace App\Exports;
use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class UsersExport implements FromCollection
{
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
return User::all();
}
}
در این مرحله ما باید کنترلر جدیدی ایجاد کنیم.بنابراین کنترلری به نام MyController در مسیر “app/Http/Controllers/MyController.php” ایجاد می کنیم.این کنترلر تمام درخواست های importExportView ، export و import و پاسخی که بازگردانده می شود را مدیریت می کند، بنابراین محتوای زیر را در فایل کنترلر مذکور قرار دهید:
app/Http/Controllers/MyController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Exports\UsersExport;
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
class MyController extends Controller
{
/**
* @return \Illuminate\Support\Collection
*/
public function importExportView()
{
return view('import');
}
/**
* @return \Illuminate\Support\Collection
*/
public function export()
{
return Excel::download(new UsersExport, 'users.xlsx');
}
/**
* @return \Illuminate\Support\Collection
*/
public function import()
{
Excel::import(new UsersImport,request()->file('file'));
return back();
}
}
در آخرین مرحله باید یک فایل Blade برای طرح یا layout بسازیم ، پس یک فایل blade با نام import.blade.php در مسیر “resources/views/import.blade.php” ایجاد می کنیم و کدهای طراحی خود را در آن می نویسیم:
resources/views/import.blade.php
<!DOCTYPE html>
<html>
<head>
<title>آموزش ایمپورت و اکسپورت کردن فایل اکسل و csv در لاراول 6 - تجاری اپ</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
<style>
body
{
direction: rtl;
text-align: right;
}
</style>
</head>
<body>
<div class="container">
<div class="card bg-light mt-3">
<div class="card-header">
آموزش ایمپورت و اکسپورت کردن فایل اکسل و csv در لاراول 6 - تجاری اپ
</div>
<div class="card-body">
<form action="{{ route('import') }}" method="POST" enctype="multipart/form-data">
@csrf
<input type="file" name="file" class="form-control">
<br>
<button class="btn btn-success">ایمپورت داده های کاربر</button>
<a class="btn btn-warning" href="{{ route('export') }}">اکسپورت داده های کاربر</a>
</form>
</div>
</div>
</div>
</body>
</html>
اکنون می توانید برنامه لاراول 6 خود را بررسی کنید.بنابراین برای این کار دستور زیر را اجرا کنید:
php artisan serve
اکنون می توانید URL زیر را در مرورگر خود باز کنید :
همچنین بخوانید: آموزش آپلود عکس در لاراول 6
http://localhost:8000/importExportView
امیدوارم این آموزش برای شما مفید بوده باشد…
1 Comment
برای آپدیت دیتا بیس هم باید همین کارو انجام بدیم ؟