Laravel এ Excel Export: একটি গাইড
যেকোনো প্রজেক্টে কাজ করার সময় ডাটা এক্সেলে এক্সপোর্ট করা বা ডাউনলোড করার প্রয়োজন হয়। কিন্তু কিভাবে এ কাজটি করতে হয় তা নিয়ে অনেকেই ঝামেলায় পড়েন। চলুন, লেটেস্ট লারাভেল এনভায়রনমেন্টে কিভাবে প্যাকেজ, ক্লাস, কন্ট্রোলার সেট-আপ করবেন বিস্তারিত জেনে নিই।
1. প্যাকেজ নির্বাচন
আমরা Laravel এর Maatwebsite Excel প্যাকেজটি ব্যবহার করবো।
2. প্যাকেজ ইনস্টল করার জন্য প্রি-রিকোযিট
এই প্যাকেজ ইন্সটলের জন্য কিছু প্রি-রিকোযিট আমাদের ফলো করতে হবে:
-
CMD/Bash এ
php -v
দিয়ে PHP ভার্সন চেক করুন। -
php -m
দিয়ে নিচের মডিউলগুলো আছে কিনা চেক করুন:- PHP:
^7.2|^8.0
- Laravel:
^5.8
- PhpSpreadsheet:
^1.21
- PHP extension:
php_zip
,php_xml
,php_gd2/gd
,php_iconv
,php_simplexml
,php_xmlreader
,php_zlib
(সবগুলোই enabled থাকতে হবে)
- PHP:
যদি কোনো এক্সটেনশন না থাকে, php.ini
ফাইল নোটপ্যাডে ওপেন করে এক্সটেনশনের আগে সেমিকোলন তুলে এনাবল করুন এবং সেভ করুন । এরপর আবার চেক করুন সবগুলো এনাবল হয়েছে কিনা।
3. প্যাকেজ ইনস্টলেশন
টার্মিনালে নিচের কমান্ডটি দিয়ে প্যাকেজটি ইনস্টল করুন:
composer require maatwebsite/excel
এটি সফলভাবে ইনস্টল হলে, composer.json
এ "maatwebsite/excel": "^3.1"
হিসেবে দেখাবে, যা মানে লেটেস্ট প্যাকেজটি ইন্সটল হয়েছে।
4. রাউট, ক্লাস, কন্ট্রোলার লেখা
এখন আমাদের এনভায়রনমেন্ট রেডি। শুরুতে যে লিস্ট বানাবো, তার নামে একটি এক্সপোর্ট ক্লাস তৈরী করি; ধরুন আমরা user list
এক্সপোর্ট করবো। এজন্য UsersExport
ক্লাসের কোড লিখবোঃ
php artisan make:export UsersExport
এখন app/Exports/UsersExport.php
ফাইলে ফাইলটি চেক করুন।
5. ক্লাসে লজিক লেখা
UsersExport
ক্লাসে প্রয়োজন মতো লজিক লিখুন। এখানে যা লিখবেন সেটিই মূলত এক্সেলে দেখাবে।
ডিফল্ট মেথড collection()/query()
: collection()
বা query()
যেকোন একটি মেথড লেখলেই হবে, দুটোর উদ্দেশ্য সেইম। এবার মেথডে ডাটাবেসের কোন টেবিল থেকে কি ডাটা এক্সপোর্ট প্রয়োজন সেটির লজিক লিখুন;
যেমনঃ আমি সব ইউজারের ডাটা এক্সেলে দেখাবো। তাহলে লিখবো-
public function collection()
{
return User::all(); // সব ইউজারের ডাটা এক্সেলে দেখাবে
}
6. হেডার নির্ধারণ
আমরা চাইলে আরো কিছু মেথড ইমপ্লিমেন্ট করতে পারি। যেমন এক্সেলে টেবিল হেডার নির্ধারণ:
public function headings(): array
{
return [
'Sl No.',
'Name',
'Email',
];
}
এই মেথড লেখার জন্যে WithHeadings
interface এড করা লাগবে বা অটো এড হয়ে যেতে পারে।
7. ডাটা ম্যাপিং
এখন ডাটা ম্যাপ করে হেডার ওয়াইজ ইউজার ডাটাকে নির্ধারণ করুন। অর্থাৎ কোন হেডার কলামে ইউজার টেবিলের কোন ডাটা বসবে।
public function map($row): array
{
static $counter = 0;
return [
++$counter,
$row->name,
$row->email,
];
}
8. রাউট ও কন্ট্রোলার লেখা
রাউট যোগ করুন:
Route::get('/export-users', [UserController::class, 'exportUsers'])->name('user.excel.download');
কন্ট্রোলার মেথড:
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
class UserController extends Controller
{
public function exportUsers()
{
return Excel::download(new UsersExport, 'users.xlsx');
}
}
users.xlsx
ফাইলে আপনার পছন্দমতো নাম দিতে পারবেন।
9. বাটন তৈরি
এখন একটি বাটন তৈরি করুন যেটি ক্লিক করলে এই রাউট হিট হবে:
<a href="{{ route('user.excel.download') }}">
<button>Excel Download</button>
</a>
10. সমাপ্তি
এখন আপনার এনভায়রনমেন্ট রেডি। আপনি যেখানে খুশি সেখানেই এই রাউট ডিক্লার করলে এক্সেল এক্সপোর্ট বা ডাউনলোড হয়ে যাবে।
রেফারেন্স
যদি কোনো কনফিউশন থাকে অথবা improvent পরামর্শ থাকে, কমেন্টে জানান।
শিখুন, জানুন।
~ ইতি রুহুল কুদ্দুস
ধন্যবাদ