pear / spreadsheet_excel_writer
Allows writing of Excel spreadsheets without the need for COM objects. Supports formulas, images (BMP) and all kinds of formatting for text and cells.
Requires
- php: >=5.6
- pear/ole: >=1.0.0RC4
- pear/pear-core-minimal: ^1.10
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: >=5 <10
- sanmai/phpunit-legacy-adapter: ^6 || ^8
This package is auto-updated.
Last update: 2024-11-10 13:49:50 UTC
README
Spreadsheet_Excel_Writer
This package is Spreadsheet_Excel_Writer and has been migrated from svn.php.net.
Please report all new issues via the PEAR bug tracker.
If this package is marked as unmaintained and you have fixes, please submit your pull requests and start discussion on the pear-qa mailing list.
Installation
Pear
To test, run
$ phpunit
To build, simply
$ pear package
To install from scratch
$ pear install package.xml
To upgrade
$ pear upgrade -f package.xml
Composer
This package comes with support for Composer.
To install from Composer
$ composer require pear/spreadsheet_excel_writer
To install the latest development version
$ composer require pear/spreadsheet_excel_writer:dev-master
Features
- writing Excel (.XLS) spreadsheets
- support: strings (with formatting for text and cells), formulas, images (BMP)
Limitations
Library support only 2 types of format for writing XLS, also known as Binary Interchange File Format (BIFF):
- BIFF5 (Excel 5.0 - Excel 95)
- BIFF8 (Excel 98 - Excel 2003)
Some important limitations:
Explanation of formats and specifications you can find here (section "Useful references")
Correct output only guaranteed with mbstring.func_overload = 0
otherwise, you should use workround mb_internal_encoding('latin1');
Usage
Basic usage
use Spreadsheet_Excel_Writer; $filePath = __DIR__ . '/output/out.xls'; $xls = new Spreadsheet_Excel_Writer($filePath); // 8 = BIFF8 $xls->setVersion(8); $sheet = $xls->addWorksheet('info'); // only available with BIFF8 $sheet->setInputEncoding('UTF-8'); $headers = [ 'id', 'name', 'email', 'code', 'address' ]; $row = $col = 0; foreach ($headers as $header) { $sheet->write($row, $col, $header); $col++; } for ($id = 1; $id < 100; $id++) { $data = [ 'id' => $id, 'name' => 'Name Surname', 'email' => 'mail@gmail.com', 'password' => 'cfcd208495d565ef66e7dff9f98764da', 'address' => '00000 North Tantau Avenue. Cupertino, CA 12345. (000) 1234567' ]; $sheet->writeRow($id, 0, $data); } $xls->close();
Format usage
$xls = new Spreadsheet_Excel_Writer(); $titleFormat = $xls->addFormat(); $titleFormat->setFontFamily('Helvetica'); $titleFormat->setBold(); $titleFormat->setSize(10); $titleFormat->setColor('orange'); $titleFormat->setBorder(1); $titleFormat->setBottom(2); $titleFormat->setBottomColor(44); $titleFormat->setAlign('center'); $sheet = $xls->addWorksheet('info'); $sheet->write(0, 0, 'Text 123', $titleFormat);
Header usage (Sending HTTP header for download dialog)
$xls = new Spreadsheet_Excel_Writer(); $xls->send('excel_'.date("Y-m-d__H:i:s").'.xls');
Performance
Platform:
Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz
PHP 7.4
Test case:
Write xls (BIFF8 format, UTF-8), by 5 cells (1x number, 4x string without format/styles, average line length = 120 char) in each row
Estimated performance:
Alternative solutions
- PHPOffice/PhpSpreadsheet
File formats supported: https://phpspreadsheet.readthedocs.io/en/latest/ - box/spout
File formats supported: https://opensource.box.com/spout/