Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/secit-pl/simple-excel-export
Simple Excel exporter
https://github.com/secit-pl/simple-excel-export
Last synced: about 1 month ago
JSON representation
Simple Excel exporter
- Host: GitHub
- URL: https://github.com/secit-pl/simple-excel-export
- Owner: secit-pl
- License: mit
- Created: 2019-11-18T10:00:29.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-08-29T19:41:52.000Z (4 months ago)
- Last Synced: 2024-08-29T21:52:58.849Z (4 months ago)
- Language: PHP
- Homepage:
- Size: 17.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Simple Excel exporter
Simple library which allows to quickly create MS Excel exports.
Key features:
- Simple
- Multi sheet support
- Values can be accessed by the [PropertyAccess Component](https://symfony.com/doc/current/components/property_access.html) or [PHP callback](https://www.php.net/manual/en/language.types.callable.php).
- XLS, XLSX and CSV support (by passing the second argument while creating a new \SecIT\SimpleExcelExport\Excel obejct)
- Symfony 4+ compatible (getResponse() returns valid [Symfony Response](https://symfony.com/doc/current/components/http_foundation.html#response))## Security warning
> [!CAUTION]
> The PHPOffice/PhpSpreadsheet library used by this bundle has a serious security vulnerability in versions <2.2.1. Please update this bundle as soon as possible to version 2.0.0 or grater, which allows to install only the secured version of PHPOffice/PhpSpreadsheet.
> More details can be found here https://github.com/PHPOffice/PhpSpreadsheet/security/advisories/GHSA-ghg6-32f9-2jp7## Installation
From the command line run
```
$ composer require secit-pl/simple-excel-export
```## Usage
### Basic example
#### Send Excel file as response to user
```php
[
['col1' => 123, 'col2' => 321],
['col1' => 234, 'col2' => 345],
],
];$excel = new Excel('test', Excel::OUTPUT_XLSX);
$excel->setColumnsAutoSizingEnabled(true);$excel->addSheet('Simple array example')
->setColumn('Column 1', '[col1]') // use Symfony property access component notation or callback
->setColumn('Column 2', '[col2]');// get response (Symfony compatible)
$response = $excel->getResponse($data)// and sent it to the browser
$response->send();
```#### Create Excel file
```php
[
['col1' => 123, 'col2' => 321],
['col1' => 234, 'col2' => 345],
],
];$excel = new Excel('test', Excel::OUTPUT_XLSX);
$excel->setColumnsAutoSizingEnabled(true);$excel->addSheet('Simple array example')
->setColumn('Column 1', '[col1]') // use Symfony property access component notation or callback
->setColumn('Column 2', '[col2]');// get file
$splFileObject = $excel->getFile('/path/to/the/file.xlsx', $data);
```### Advanced example
```php
name = $name;
$this->surname = $surname;
$this->parent = $parent;
}
}// the data
$data = [
'Simple array example' => [
['col1' => 123, 'col2' => 321],
['col1' => 234, 'col2' => 345],
],
'Filters example' => [
['col3' => 'So sad', 'col4' => new \DateTime()],
['col3' => 'So happy', 'col4' => new \DateTime('1234-12-11 11:11:22')],
],
'Objects example' => [
new ExampleUser('John', 'Blue', new ExampleUser('Jan', 'Blue')),
new ExampleUser('Jack', 'Red', new ExampleUser('Tom', 'Red')),
],
'Callback example' => [
['col1' => 1, 'col2' => 2, 'col3' => null],
['col1' => 3, 'col2' => 4, 'col3' => null],
],
];// Create the new Excel object
$excel = new Excel('test', Excel::OUTPUT_XLSX);
$excel->setColumnsAutoSizingEnabled(true);// Simple array example
$excel->addSheet('Simple array example')
->setColumn('Column 1', '[col1]')
->setColumn('Column 2', '[col2]');// Filters example
$excel->addSheet('Filters example')
->setColumn('Column 3', '[col3]', [
new Excel\Filter\PregReplaceFilter('/sad/', 'happy'),
])
->setColumn('Column 4', '[col4]', [
new Excel\Filter\DateTimeFilter('d.m.Y'),
]);// Objects example
$excel->addSheet('Objects example')
->setColumn('Name', 'name')
->setColumn('Surname', 'surname')
->setColumn('Parent name', 'parent.name')
;// Callback example
$excel->addSheet('Callback example')
->setColumn('Column 1', '[col1]')
->setColumn('Column 2', '[col2]')
->setColumn('Column 1 + Column 2', static function ($row) {
return $row['col1'] + $row['col2'];
});// Get response and sent it to the browser
$excel->getResponse($data)
->send();
```## Want to support this bundle?
Consider using our [random code generator](https://codito.io/) service at [codito.io](https://codito.io/).
With [codito.io](https://codito.io/) you can generate up to 250,000 codes in the format of your choice for free. You can use the generated codes for purposes such as promotional codes (which you can, for example, print on the inside of packaging), serial numbers, one-time or multi-use passwords, lottery coupons, discount codes, vouchers, random strings and much more - for more use cases see our [examples](https://codito.io/free-random-code-generator/examples). If 250,000 codes are not enough for you, you can use our [commercial code generation service](https://codito.io/commercial-code-generator/).
[![Random Code Generator](https://codito.io/build/favicons/logo.e56f7fb1.webp)](https://codito.io/)