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.
To test, run
$ phpunit
To build, simply
$ pear package
To install from scratch
$ pear install package.xml
To upgrade
$ pear upgrade -f package.xml
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
- writing Excel (.XLS) spreadsheets
- support: strings (with formatting for text and cells), formulas, images (BMP)
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:
Limit | BIFF5 | BIFF8 |
---|---|---|
Maximum number of rows | 16384 | 65535 |
Maximum number of columns | 255 | 255 |
Maximum data size of a record | 2080 bytes | 8224 bytes |
Unicode support | CodePage based character encoding | UTF-16LE |
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');
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' => '[email protected]',
'password' => 'cfcd208495d565ef66e7dff9f98764da',
'address' => '00000 North Tantau Avenue. Cupertino, CA 12345. (000) 1234567'
];
$sheet->writeRow($id, 0, $data);
}
$xls->close();
$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);
$xls = new Spreadsheet_Excel_Writer();
$xls->send('excel_'.date("Y-m-d__H:i:s").'.xls');
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:
Number of rows | Time (seconds) | Peak memory usage (MB) |
---|---|---|
10000 | 0.2 | 4 |
20000 | 0.4 | 4 |
30000 | 0.6 | 6 |
40000 | 0.8 | 6 |
50000 | 1.0 | 8 |
65534 | 1.2 | 8 |
- PHPOffice/PhpSpreadsheet
File formats supported: https://phpspreadsheet.readthedocs.io/en/latest/ - box/spout
File formats supported: https://opensource.box.com/spout/