PhpSpreadsheet là thư viện phát triển để thay thế cho phpExcel, với các tính năng thừa hưởng từ phpexcel.
Để cài đặt PhpSpreadsheet cho NukeViet bạn chỉ cần chạy lệnh
composer require phpoffice/phpspreadsheet
Tham khảo các file mẫu tại https://github.com/PHPOffice/PhpSpreadsheet/tree/develop/samples
Thông thường ta chỉ cần sử dụng lệnh
$objWorksheet->setCellValue('A' . $i, $value);
Để ghi ra ô 'A' . $i
. Cần chú ý một số điểm sau đối với $value
.
$value
là kiểu số, kiểu text thông thường không có các ký tự đặc biệt ta chỉ cần xuất bình thường như trên.$value
là giá trị từ trình soạn thảo, chứa các mã html thì cần dùng hàm strip_tags để lọc bỏ các mã html$value
chứa khoảng trắng dạng
ta cần chuyển thành khoảng trắng space thông thường.$value
chứa các mã html đặc biệt hãy chuyển nó sang ký tự thông thường bằng hàm nv_unhtmlspecialchars
$value
bắt đầu bằng ký tự =
hoặc $value
là dạng một hàm ví dụ $value = '=MAX(F2)';
Khi dùng lệnh xuất trên sẽ lỗi, cần ghi ra bằng lệnh
$objWorksheet->setCellValueExplicit('A' . $i, $value, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
Chú ý: Hiện tại thư viện này đã dừng phát triển và chuyển sang PhpSpreadsheet do đó bạn nên sử dụng PhpSpreadsheet thay thế cho PHPExcel.
Để sử dụng được bộ thư viện viết bằng php này thì đòi hỏi cấu hình Server bạn phải như sau:
PHP version 5.2.0 hoặc mới hơn PHP extension php_zip enabled PHP extension php_xml enabled PHP extension php_gd2 enabled
Mở composer.json
ở thư mục gốc website, thêm vào mục require
giá trị
"phpoffice/phpexcel": "1.9.x-dev"
Chú ý: Hiện này nhóm phát triển phpexcel đã xóa nhánh 1.9 trên kho của họ do đó để cài đặt, bạn có thể sử dụng kho dự phòng của tác giả Phan Tấn Dũng tại https://github.com/hoaquynhtim99/phpexcel bằng cách mởcomposer.json
ở thư mục gốc website, thêm vào mụcrequire
giá trị
"hoaquynhtim99/phpexcel": "dev-master"
Sau đó chạy lệnh composer update
Đoạn code sau để kiểm tra thư viện và đọc file excel, tìm số dòng, số cột của file
if (!is_dir(NV_ROOTDIR . '/vendor/phpoffice/phpexcel')) { trigger_error('Open composer.json, add to require "phpoffice/phpexcel": "1.9.x-dev" then run Composer Update', 256); } $objPHPExcel = \PHPExcel\IOFactory::load(NV_UPLOADS_REAL_DIR . "/" . $module_name . "/" . $file_name); $objWorksheet = $objPHPExcel->getActiveSheet(); $highestRow = $objWorksheet->getHighestRow(); // e.g. 10 $highestColumn = $objWorksheet->getHighestColumn(); // e.g 'F' $highestColumnIndex = \PHPExcel\Cell::columnIndexFromString($highestColumn);