Đọc nội dung Excel bằng Laravel
Hướng dẫn chi tiết cách đọc nội dung file Excel trong Laravel bằng gói Laravel Excel. Bài viết cung cấp đoạn mã mẫu, giải thích chi tiết từng bước và hướng dẫn cài đặt gói cần thiết.
Chúng ta sẽ sử dụng gói Laravel Excel để đọc nội dung từ một file Excel. Đoạn mã sẽ mở file, đọc từng hàng và cột, sau đó hiển thị dữ liệu trên trang web.
Bước 1: Cài đặt gói Laravel Excel
composer require maatwebsite/excel
Bước 2: Đọc nội dung file Excel
Tạo một controller với lệnh sau:
php artisan make:controller ExcelController
Trong ExcelController.php
:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
class ExcelController extends Controller
{
public function import()
{
$path = storage_path('app/public/sample.xlsx');
$data = Excel::toArray([], $path);
// In nội dung của file Excel ra màn hình
foreach ($data[0] as $row) {
echo implode("\t", $row) . "<br>";
}
}
}
Bước 3: Định nghĩa route cho phương thức import
Trong file web.php
:
use App\Http\Controllers\ExcelController; Route::get('/import-excel', [ExcelController::class, 'import']);
Giải thích chi tiết
composer require maatwebsite/excel
: Cài đặt gói Laravel Excel.use Maatwebsite\Excel\Facades\Excel;
: Sử dụng facadeExcel
của gói Laravel Excel.$path = storage_path('app/public/sample.xlsx');
: Đường dẫn đến file Excel cần đọc.$data = Excel::toArray([], $path);
: Đọc nội dung file Excel và lưu vào biến$data
.foreach ($data[0] as $row)
: Duyệt qua từng hàng của sheet đầu tiên.echo implode("\t", $row) . "<br>";
: In nội dung từng hàng ra màn hình.
Yêu cầu hệ thống
- PHP: 7.3 trở lên
- Laravel: 8.x trở lên
- Gói Laravel Excel: 3.1 trở lên
Cách cài đặt các thư viện để chạy được đoạn mã trên
- Chạy lệnh
composer require maatwebsite/excel
để cài đặt gói Laravel Excel. - Đảm bảo file Excel cần đọc nằm trong thư mục
storage/app/public
.
Lời khuyên
- Đảm bảo kiểm tra quyền truy cập thư mục
storage
trước khi đọc file. - Sử dụng các phương thức của Laravel Excel như
toCollection()
hoặctoArray()
để xử lý dữ liệu linh hoạt hơn.