Hướng Dẫn Tạo File Excel Sử Dụng PHP

PHP có hỗ trợ native việc tạo file CSV thông qua hàm fputcsv mà không cần cài thêm thư viện nào. Tuy nhiên PHP lại không hỗ trợ sẵn việc tạo tập tin Excel. Có nhiều thư viện khác nhau trong PHP có thể được sử dụng để tạo file Excel. Trong số các thư viện này thì PhpSpreadsheet là thư viện đang được nhiều người sử dụng hiện nay. Trong bài viết này chúng ta sẽ cùng tìm hiểu cách tạo file Excel sử dụng thư viện này.

Giới Thiệu

PhpSpreadsheet là bộ thư viện được viết sử dụng ngôn ngữ PHP thuần tuý cung cấp các lớp class dùng để đọc nội dung từ cũng như tạo ra các tập tin theo định dạng Excel (thường dùng trên hệ điều hành Windows) và LibreOffice Calc (thường dùng trên trên hệ điều hành Linux).

Logo  Thư Viện PhpSpreadsheet

Để có thể cài đặt và sử dụng bộ thư viện này thì trên hệ thống bạn cần:

  • Cài PHP phiên bản 5.6 hoặc mới hơn
  • Cài và kích hoạt phần mở rộng php_zip
  • Cài và kích hoạt phần mở rộng php_xml
  • Cài và kích hoạt phần mở rộng php_gd2 (nếu như trước đó extension này không được compile cùng thời điểm cài đặt PHP, trường hợp có rồi thì thôi)

Cài Đặt

Chúng ta sẽ sử dụng composer để cài đặt bộ thư viện PhpSpreadsheet. Sử dụng chương trình cửa sổ dòng lệnh terminal (trên Mac và Linux) hoặc Command Prompt (trên Windows) và chạy câu lệnh sau:

$ composer require phpoffice/phpspreadsheet

Câu lệnh trên sẽ cài đặt phiên bản stable và mới nhất của bộ thư viện PhpSpreadsheet lên hệ thống. Trường hợp bạn muốn sử dụng phiên bản mới nhất nhưng không stable thì có thể chạy câu lệnh phpoffice/phpspreadsheet:dev-develop.

Viết File Excel Cơ Bản

Sau khi hoàn tất quy trình cài đặt bộ thư viện PhpSpreadsheet bạn tạo một file php ở một thư mục nào đó trên máy và đặt tên là hello_world.php với nội dung sau:

<?php
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();

$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');

$writer = new Xlsx($spreadsheet);
$writer->save('hello_world.xlsx');

Ở đoạn code trên chúng ta thực hiện việc tạo một file Excel mới bằng cách tạo một đối tượng từ class Spreadsheet:

$spreadsheet = new Spreadsheet();

Sau đó gán giá trị cho ô A1Hello World:

$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');

Cuối cùng viết ra file Excel với format là XLSX và đặt tên là hello_wold.xlsx:

$writer = new Xlsx($spreadsheet);
$writer->save('hello_world.xlsx');

Bây giờ để chạy ví dụ trên thì bạn mở chương trình cửa sổ dòng lệnh (trên Windows bạn sử dụng chương trình Command Prompt) và di chuyển tới thư mục chứa tập tin hello_world.php ở trên (sử dụng lệnh cd) và rồi chạy câu lệnh sau:

$ php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples

Câu lệnh trên sẽ khởi động PHP built-in server (server có của của PHP) và chạy server này trên cổng 8000. Cách làm này sẽ rút ngắn thời gian so với việc phải cài đặt và cấu hình server (như Apache hoặc Nginx) để chạy thử file PHP ở trên. Tiếp theo bạn cần mở trình duyệt và truy cập vào địa chỉ sau:

http://localhost:8000/

Lúc này nếu quay trở lại thư mục chứa tập tin hello_world.php bạn sẽ thấy một tập tin hello_world.xlsx được tạo ra.

Viết Lên File Excel Có Sẵn

Cách tạo ra file Excel như trên được gọi là tạo từ memory. Ngoài cách này ra thì chúng ta còn có thể viết dữ liệu lên file Excel có sẵn trên hệ thống. Với cách làm này chúng ta sẽ có một chút thay đổi ở phần tạo đối tượng Spreadsheet (được lưu trữ trong biến $spreadsheet) như sau:

<?php
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$filePath = './hello_world.xls';

/** Tải file Excel từ địa chỉ $filePath vào đối tượng Spreadsheet **/
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filePath);

// code viết dữ liệu lên file Excel tương tự như phần trước
// ...

Kết Luận

Qua bài viết này bạn đã được tìm hiểu cách cài đặt và sử dụng thư viện PhpSpreadsheet một cách cơ bản để viết nội dung lên file Excel, ở các bài viết tiếp theo chúng ta sẽ cùng nhau tìm hiểu cách tạo các file Excel nâng cao mà trong đó có sử dụng các hàm của Excel.

1 Bình Luận

Content must not be empty

Related Blog