PhpSpreadsheet is a library written in pure PHP and providing a set of classes that allow you to read from and to write to different spreadsheet file formats, like Excel and LibreOffice Calc.
Format | Reading | Writing |
---|---|---|
Open Document Format/OASIS (.ods) | ✓ | ✓ |
Office Open XML (.xlsx) Excel 2007 and above | ✓ | ✓ |
BIFF 8 (.xls) Excel 97 and above | ✓ | ✓ |
BIFF 5 (.xls) Excel 95 | ✓ | |
SpreadsheetML (.xml) Excel 2003 | ✓ | |
Gnumeric | ✓ | |
HTML | ✓ | ✓ |
SYLK | ✓ | |
CSV | ✓ | ✓ |
PDF (using either the TCPDF, Dompdf or mPDF libraries, which need to be installed separately) | ✓ |
The following software is required to develop using PhpSpreadsheet:
- PHP version 5.6 or newer
- PHP extension php_zip enabled
- PHP extension php_xml enabled
- PHP extension php_gd2 enabled (if not compiled in)
Support for PHP versions will only be maintained for a period of six months beyond the end-of-life of that PHP version
Use composer to install PhpSpreadsheet into your project:
composer require phpoffice/phpspreadsheet
Note: If you want the unreleased, unstable development version use
phpoffice/phpspreadsheet:dev-develop
instead.
This would be the simplest way to write a spreadsheet:
<?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');
A good way to get started is to run some of the samples. Serve the samples via PHP built-in webserver:
php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples
Then point your browser to:
The samples may also be run directly from the command line, for example:
php vendor/phpoffice/phpspreadsheet/samples/01_Simple.php
For more in-depth documentation, you may read about an overview of the architecture, creating a spreadsheet, worksheets, accessing cells and reading and writing to files.
Please refer to the contributor list for up-to-date credits.