mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-09-18 14:06:34 +00:00
7d8bec828b
Mostly in response to issue #3961, which noted some discrepancies, both positive and negative, between documentation and reality concerning ODS support.
164 lines
6.1 KiB
Markdown
164 lines
6.1 KiB
Markdown
# Welcome to PhpSpreadsheet's documentation
|
|
|
|

|
|
|
|
PhpSpreadsheet is a library written in pure PHP and offers a set of classes that
|
|
allow you to read and write various spreadsheet file formats such as Excel and LibreOffice Calc.
|
|
|
|
## File formats supported
|
|
|
|
|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)| | ✓ |
|
|
|
|
Note - reading or writing certain aspects of a spreadsheet may not be supported in all formats. For more details, please consult
|
|
[Features Cross-reference](./references/features-cross-reference.md).
|
|
|
|
# Getting started
|
|
|
|
## Software requirements
|
|
|
|
PHP version 8.1 or newer to develop using PhpSpreadsheet. Other requirements, such as PHP extensions, are enforced by
|
|
composer. See the `require` section of [the composer.json file](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/composer.json)
|
|
for details.
|
|
|
|
### PHP version support
|
|
|
|
LTS: Support for PHP versions will only be maintained for a period of six months beyond the
|
|
[end of life of that PHP version](https://www.php.net/eol.php).
|
|
|
|
Currently, the required PHP minimum version is __PHP 8.1__, and we [will support that version](https://www.php.net/eol.php) until June 2026.
|
|
|
|
Support for PHP versions will only be maintained for a period of six months beyond the
|
|
[end of life](https://www.php.net/supported-versions) of that PHP version.
|
|
|
|
See the `composer.json` for other requirements.
|
|
|
|
## Installation
|
|
|
|
Use [composer](https://getcomposer.org) to install PhpSpreadsheet into your project:
|
|
|
|
```sh
|
|
composer require phpoffice/phpspreadsheet
|
|
```
|
|
|
|
Or also download the documentation and samples if you plan to use them:
|
|
|
|
```sh
|
|
composer require phpoffice/phpspreadsheet --prefer-source
|
|
```
|
|
|
|
If you are building your installation on a development machine that is on a different PHP version to the server where it
|
|
will be deployed, or if your PHP CLI version is different from your run-time such as `php-fpm` or Apache's `mod_php`,
|
|
then you might want to configure composer for that.
|
|
See [composer documentation](https://getcomposer.org/doc/06-config.md#platform)
|
|
on how to edit your `composer.json` to ensure that the correct dependencies are retrieved to match your deployment
|
|
environment.
|
|
|
|
See [CLI vs Application run-time](https://php.watch/articles/composer-platform-check) for more details.
|
|
|
|
### Additional Installation Options
|
|
|
|
If you want to write to PDF, or to include Charts when you write to HTML or PDF, then you will need to install additional libraries:
|
|
|
|
#### PDF
|
|
|
|
For PDF Generation, you can install any of the following, and then configure PhpSpreadsheet to indicate which library you are going to use:
|
|
- mpdf/mpdf
|
|
- dompdf/dompdf
|
|
- tecnickcom/tcpdf
|
|
|
|
and configure PhpSpreadsheet using:
|
|
|
|
```php
|
|
// Dompdf, Mpdf or Tcpdf (as appropriate)
|
|
$className = \PhpOffice\PhpSpreadsheet\Writer\Pdf\Dompdf::class;
|
|
IOFactory::registerWriter('Pdf', $className);
|
|
```
|
|
or the appropriate PDF Writer wrapper for the library that you have chosen to install.
|
|
|
|
#### Chart Export
|
|
|
|
For Chart export, we support following packages, which you will also need to install yourself using `composer require`
|
|
- [jpgraph/jpgraph](https://packagist.org/packages/jpgraph/jpgraph) (this package was abandoned at version 4.0.
|
|
You can manually download the latest version that supports PHP 8 and above from [jpgraph.net](https://jpgraph.net/))
|
|
- [mitoteam/jpgraph](https://packagist.org/packages/mitoteam/jpgraph) - up to date fork with modern PHP versions support and some bugs fixed.
|
|
|
|
and then configure PhpSpreadsheet using:
|
|
```php
|
|
// to use jpgraph/jpgraph
|
|
Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\JpGraph::class);
|
|
//or
|
|
// to use mitoteam/jpgraph
|
|
Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\MtJpGraphRenderer::class);
|
|
```
|
|
|
|
One or the other of these libraries is necessary if you want to generate HTML or PDF files that include charts; or to render a Chart to an Image format from within your code.
|
|
They are not necessary to define charts for writing to `Xlsx` files.
|
|
Other file formats don't support writing Charts.
|
|
|
|
## Hello World
|
|
|
|
This would be the simplest way to write a spreadsheet:
|
|
|
|
```php
|
|
<?php
|
|
|
|
require 'vendor/autoload.php';
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
|
|
$spreadsheet = new Spreadsheet();
|
|
$activeWorksheet = $spreadsheet->getActiveSheet();
|
|
$activeWorksheet->setCellValue('A1', 'Hello World !');
|
|
|
|
$writer = new Xlsx($spreadsheet);
|
|
$writer->save('hello world.xlsx');
|
|
```
|
|
|
|
## Learn by example
|
|
|
|
A good way to get started is to run some of the samples. Don't forget to download them via `--prefer-source` composer
|
|
flag. And then serve them via PHP built-in webserver:
|
|
|
|
```sh
|
|
php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples
|
|
```
|
|
|
|
Then point your browser to:
|
|
|
|
> http://localhost:8000/
|
|
|
|
The samples may also be run directly from the command line, for example:
|
|
|
|
```sh
|
|
php vendor/phpoffice/phpspreadsheet/samples/Basic/01_Simple.php
|
|
```
|
|
|
|
## Learn by documentation
|
|
|
|
For more documentation in depth, you may read about an [overview of the
|
|
architecture](./topics/architecture.md),
|
|
[creating a spreadsheet](./topics/creating-spreadsheet.md),
|
|
[worksheets](./topics/worksheets.md),
|
|
[accessing cells](./topics/accessing-cells.md) and
|
|
[reading and writing to files](./topics/reading-and-writing-to-file.md).
|
|
|
|
Or browse the [API documentation](https://phpoffice.github.io/PhpSpreadsheet).
|
|
|
|
# Credits
|
|
|
|
Please refer to the [contributor
|
|
list](https://github.com/PHPOffice/PhpSpreadsheet/graphs/contributors)
|
|
for up-to-date credits.
|