Hướng dẫn read file excel php

Trong bất kì một ứng dụng PHP nào, chúng ta cũng cần phải có ít nhất một lần đụng tới việc trích xuất dữ liệu hoặc đọc dữ liệu từ file excel, chẳng hạn như báo cáo doanh thu bán hàng, ngân hàng, danh sách nhân viên, danh sách khách hàng,… Rất rất nhiều thứ phải cần đến đến việc đọc và ghi file excel bằng PHP.

Do đó, trong bài viết ngày hôm nay, mình sẽ hướng dẫn các bạn làm được điều này, bằng cách sử dụng thư viện hỗ trợ điều này, thư viện có tên PHPExcel. Đây là một thư viện hỗ trợ đọc và ghi file excel cực kì tốt và sử dụng rộng rãi

Mục lục

  • Đọc và ghi file excel bằng PHPExcel
    • 1. Download thư viện PHPExcel
    • 2. Đọc file excel
    • 3. Ghi dữ liệu ra file excel

Đọc và ghi file excel bằng PHPExcel

1. Download thư viện PHPExcel

Để có thể đọc và ghi file excel, thì bạn cần phải download thư viện PHPExcel về tại đây :

https://github.com/PHPOffice/PHPExcel

Vào link trên, bên góc phải bạn sẽ thấy một nút màu xanh lá tên là Clone or Download. Click vào, rồi chọn Download zip. Sau đó, giải nén file zip ra và copy thư mục Classes cho vào thư mục gốc chứa ứng dụng web . Như vậy là chúng ta đã xong phần download thư viện PHPExcel, tiếp đến chúng ta sẽ tiến hành đọc và ghi file excel.

2. Đọc file excel

Đọc file excel chính là cách chúng ta load 1 file excel bên trong có chứa dữ liệu, rồi tiến hành trích xuất ra dữ liệu từ trong file này để dùng cho một mục đích nào đó tùy theo yêu cầu của hệ thống.

Các bạn download file mẫu excel tên là product.xlsx mà mình đã tạo sẵn, có nội dung hình dưới và đặt nó nằm cùng cấp với thư mục Classes:

Hướng dẫn read file excel php

Tiếp theo, bạn sẽ tiến hành đọc file này bằng cách tạo thêm 1 file mới tên là docfile.php cùng cấp với thư mục Classes, và gõ theo nội dung bên dưới:

load($inputFileName);
} catch(Exception $e) {
    die('Lỗi không thể đọc file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}

//  Lấy thông tin cơ bản của file excel

// Lấy sheet hiện tại
$sheet = $objPHPExcel->getSheet(0); 

// Lấy tổng số dòng của file, trong trường hợp này là 6 dòng
$highestRow = $sheet->getHighestRow(); 

// Lấy tổng số cột của file, trong trường hợp này là 4 dòng
$highestColumn = $sheet->getHighestColumn();

// Khai báo mảng $rowData chứa dữ liệu

//  Thực hiện việc lặp qua từng dòng của file, để lấy thông tin
for ($row = 1; $row <= $highestRow; $row++){ 
    // Lấy dữ liệu từng dòng và đưa vào mảng $rowData
    $rowData[] = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE,FALSE);
}

//In dữ liệu của mảng
echo "
";
print_r($rowData);
echo "
";

Tất cả từng dòng code mình đều có chú thích, bạn nên vừa đọc code vừa đọc chú thích comment để hiểu nhé. Tiếp theo bạn tiến hành thực thi file docfile.php này, sẽ thấy kết quả in ra màng hình là một mảng chứa tất cả thông tin của file excel product.xlsx.

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => STT
                    [1] => product_name
                    [2] => quantity
                    [3] => price
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => 1
                    [1] => php ebook
                    [2] => 2
                    [3] => 100
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [0] => 2
                    [1] => java ebook
                    [2] => 1
                    [3] => 50
                )

        )

    [3] => Array
        (
            [0] => Array
                (
                    [0] => 3
                    [1] => laravel 5
                    [2] => 3
                    [3] => 120
                )

        )

    [4] => Array
        (
            [0] => Array
                (
                    [0] => 4
                    [1] => angularjs
                    [2] => 5
                    [3] => 30
                )

        )

    [5] => Array
        (
            [0] => Array
                (
                    [0] => 5
                    [1] => python
                    [2] => 4
                    [3] => 60
                )

        )

)

từ đó bạn có thể sử dụng mảng này cho mục đích thích hợp của bạn, như lưu vào cơ sở dữ liệu chẳng hạn.

3. Ghi dữ liệu ra file excel

Tương tự như file excel, chúng ta sẽ tiếp tục dùng thư viện PHPExcel để ghi dữ liệu ra file.

Đầu tiên, các bạn tạo 1 file mới, đặt tên là ghifile.php và 1 file tên là product_import.xlsx (file này tạo ra và để trống, ko cần điền nội dung, vì chúng ta sẽ điền nội dung vào bằng thư viện PHPExcel) và đặt 2 file này cùng cấp với file docfile.php. Các bạn mở file docfile.php lên và gõ nội dung như sau :

 array('name' => 'Hieu', 'email' => '', 'phone' => '0123456789', 'address' => 'address 1'),
					1 => array('name' => 'Nam', 'email' => '', 'phone' => '0124567892', 'address' => 'address 2'),
					2 => array('name' => 'Tuan', 'email' => '', 'phone' => '09764346789', 'address' => 'address 3'),
					3 => array('name' => 'Mai', 'email' => '', 'phone' => '09876543356', 'address' => 'address 4'),
					4 => array('name' => 'Thao', 'email' => '', 'phone' => '0975458979', 'address' => 'address 5'),
				);

// Thiết lập tên các cột dữ liệu
$objPHPExcel->setActiveSheetIndex(0)
                            ->setCellValue('A1', "STT")
                            ->setCellValue('B1', "Name")
                            ->setCellValue('C1', "Email")
                            ->setCellValue('D1', "Phone")
                            ->setCellValue('E1', "Address");

// Lặp qua các dòng dữ liệu trong mảng $array_data và tiến hành ghi dữ liệu vào file excel
$i = 2;
foreach ($array_data as $value) {
	$objPHPExcel->setActiveSheetIndex(0)
								->setCellValue("A$i", "$i")
								->setCellValue("B$i", $value['name'])
	                            ->setCellValue("C$i", $value['email'])
	                            ->setCellValue("D$i", $value['phone'])
	                            ->setCellValue("E$i", $value['address']);
	$i++;
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $fileType);
// Tiến hành ghi file
$objWriter->save($fileName);

Cuối cùng chạy file ghifile.php và mở file product_import.xlsx lên, các bạn sẽ thấy dữ liệu đã được ghi vào bao gồm 5 dòng tương ứng số dòng dữ liệu trong array $array_data nhé.

Hướng dẫn read file excel php

Như vậy, mình đã giới thiệu các bạn cách để đọc và ghi file excel bằng thư viện PHPExcel. Có bất kỳ thắc mắc nào hãy để lại comment bên dưới nhé. Đừng quên đăng ký nhận bài viết ở thanh sidebar bên phải để cập nhật các bài viết mới nhất từ trang.

Có thể tham khảo thêm bài viết về xử lý file text tại đây 

Chúc các bạn học tốt !

Mình là Hiếu.
Người sáng lập ra blog Kungfu PHP chia sẻ mọi thứ về tiền điện tử, mmo, lập trình,…
Một câu nói mà mình rất thích đó là “Cuộc đời chỉ có một, vì thế hãy làm những gì khiến bạn hạnh phúc và ở bên người khiến bạn luôn mỉm cười”.
Hy vọng nơi đây là góc cafe nhỏ để chúng ta có thể trao đổi, cùng nhau phát triển.

►Nếu bạn thấy bài viết bạn đang đọc hữu ích, hãy mời mình một ly cafe nhé : https://kungfuphp.com/donate