PhpSpreadsheet là một thư viện được viết bằng PHP thuần túy và cung cấp một tập hợp các lớp cho phép bạn đọc và viết các định dạng tệp bảng tính khác nhau như Excel và LibreOffice Calc
Hỗ trợ phiên bản PHP
LTS. Hỗ trợ cho các phiên bản PHP sẽ chỉ được duy trì trong khoảng thời gian sáu tháng sau khi phiên bản PHP đó hết hạn sử dụng
Hiện tại phiên bản PHP tối thiểu được yêu cầu là PHP 7. 4 và chúng tôi sẽ hỗ trợ phiên bản đó cho đến ngày 28 tháng 6 năm 2023
Xem composer.json
để biết các yêu cầu khác
Cài đặt
Sử dụng trình soạn thảo để cài đặt PhpSpreadsheet vào dự án của bạn
composer require phpoffice/phpspreadsheet
Nếu bạn đang xây dựng cài đặt của mình trên một máy phát triển có phiên bản PHP khác với máy chủ nơi nó sẽ được triển khai hoặc nếu phiên bản PHP CLI của bạn không giống với thời gian chạy của bạn, chẳng hạn như php-fpm
hoặc Apache's mod_php
, thì bạn
{ "require": { "phpoffice/phpspreadsheet": "^1.23" }, "config": { "platform": { "php": "7.4" } } }
và sau đó chạy
composer install
để đảm bảo rằng các phụ thuộc chính xác được truy xuất để phù hợp với môi trường triển khai của bạn
Xem CLI vs Thời gian chạy ứng dụng để biết thêm chi tiết
Tùy chọn cài đặt bổ sung
Nếu bạn muốn ghi sang PDF hoặc bao gồm Biểu đồ khi bạn ghi sang HTML hoặc PDF, thì bạn sẽ cần cài đặt các thư viện bổ sung
Đối với Tạo PDF, bạn có thể cài đặt bất kỳ thứ nào sau đây, sau đó định cấu hình PhpSpreadsheet để cho biết thư viện nào bạn sẽ sử dụng
- mpdf/mpdf
- dompdf/dompdf
- tecnickcom/tcpdf
và định cấu hình PhpSpreadsheet bằng cách sử dụng
// Dompdf, Mpdf or Tcpdf [as appropriate] $className = \PhpOffice\PhpSpreadsheet\Writer\Pdf\Dompdf::class; IOFactory::registerWriter['Pdf', $className];
hoặc trình bao bọc PDF Writer thích hợp cho thư viện mà bạn đã chọn cài đặt
Xuất biểu đồ
Để xuất Biểu đồ, chúng tôi hỗ trợ các gói sau, bạn cũng sẽ cần tự cài đặt các gói này bằng cách sử dụng composer require
- jpgraph/jpgraph [gói này đã bị loại bỏ ở phiên bản 4. 0. Bạn có thể tải thủ công phiên bản mới nhất hỗ trợ PHP 8 trở lên từ jpgraph. net]
- mitoteam/jpgraph [rẽ nhánh với php 8. 1 hỗ trợ]
và sau đó định cấu hình PhpSpreadsheet bằng cách sử dụng
Settings::setChartRenderer[\PhpOffice\PhpSpreadsheet\Chart\Renderer\JpGraph::class]; // to use jpgraph/jpgraph //or Settings::setChartRenderer[\PhpOffice\PhpSpreadsheet\Chart\Renderer\MtJpGraphRenderer::class]; // to use mitoteam/jpgraph
Một trong số các thư viện này là cần thiết nếu bạn muốn tạo các tệp HTML hoặc PDF bao gồm các biểu đồ
Tài liệu
Đọc thêm về nó, bao gồm hướng dẫn cài đặt, trong tài liệu chính thức. Hoặc xem tài liệu API
Vui lòng đặt câu hỏi hỗ trợ của bạn trên StackOverflow hoặc trò chuyện nhanh trên Gitter
PHPExcel so với PhpSpreadsheet?
PhpSpreadsheet là phiên bản tiếp theo của PHPExcel. Nó phá vỡ khả năng tương thích để cải thiện đáng kể chất lượng cơ sở mã [không gian tên, tuân thủ PSR, sử dụng các tính năng ngôn ngữ PHP mới nhất, v.v. ]
Vì mọi nỗ lực đã chuyển sang PhpSpreadsheet, PHPExcel sẽ không còn được duy trì. Tất cả các đóng góp cho PHPExcel, các bản vá lỗi và các tính năng mới, nên nhắm mục tiêu nhánh PhpSpreadsheet
{ "require": { "phpoffice/phpspreadsheet": "^1.23" }, "config": { "platform": { "php": "7.4" } } }0
Nếu bạn đang chạy PHP 7. 2 trên Ubuntu, bạn sẽ cần chạy các lệnh sau để cài đặt các phụ thuộc gói cần thiết
sudo apt-get install php7.2-gd php7.2-mbstring php7.2-zip -y
Nếu bạn đang chạy PHP 7. 4 trên Ubuntu, bạn sẽ cần chạy các lệnh sau để cài đặt các phụ thuộc gói cần thiết
sudo apt-get install php7.4-gd php7.4-mbstring php7.4-zip -y
Cài đặt gói
Chạy lệnh sau để cài đặt gói bảng tính
________số 8_______Xin chào thế giới ví dụ
Ví dụ sau sẽ tạo một bảng tính Excel với hàng ô đầu tiên có "Xin chào" và "Thế giới"
getProperties[];
$sheet = $spreadsheet->getActiveSheet[];
$sheet->setCellValue['A1', 'Hello'];
$sheet->setCellValue['B1', 'World'];
$writer = new PhpOffice\PhpSpreadsheet\Writer\Xlsx[$spreadsheet];
$writer->save['HelloWorld.xlsx'];
Tại sao có một nhà văn?
Lý do có một "người viết" là vì gói này dùng để tạo bảng tính và không dành riêng cho Excel. Do đó, nếu bạn muốn tạo tệp CSV, bạn chỉ cần thay đổi hai dòng cuối thành
$writer = new PhpOffice\PhpSpreadsheet\Writer\Csv[$spreadsheet];
$writer->save['HelloWorld.csv'];
"Người viết" giống như một "trình điều khiển" lấy những gì bạn đã lập trình trong "bảng tính" và chịu trách nhiệm tạo tệp ở định dạng phù hợp. Về nguyên tắc, đây là một ý tưởng hay vì nó tạo ra sự tách biệt giữa các mối quan tâm và cho phép bạn dễ dàng tạo bất kỳ loại tệp nào bạn muốn với rất ít thay đổi đối với mã của bạn [về lý thuyết]. Tuy nhiên, điều này có thể dẫn bạn đến một "trạng thái không hợp lệ". e. g. nếu bạn tạo một bảng tính thực hiện các phép tính, bảng tính đó sẽ không được "lưu" vào CSV. Định dạng đó chỉ có thể lưu các giá trị trong đó
Lặp qua các chỉ mục ô
Các ví dụ về việc sử dụng công cụ này có xu hướng hiển thị các giá trị chỉ mục ô như A1
và B3
. Tuy nhiên, thay vào đó, các chỉ mục ô có thể được truy cập bằng cách sử dụng định dạng mảng như [1,1]
, điều này có thể hữu ích hơn rất nhiều từ góc độ lập trình. e. g. bạn chỉ muốn ô tiếp theo ở bên phải/trái và không muốn lo lắng về chữ cái nào liên quan đến