From 84a8fab25a4518b1080415e8f1517dcd1808b669 Mon Sep 17 00:00:00 2001 From: Philipp Lang Date: Wed, 22 Mar 2023 21:13:12 +0100 Subject: [PATCH] add spreadsheet --- classes/Spreadsheet.php | 61 ++++ classes/SpreadsheetHeader.php | 10 + composer.json | 5 + composer.lock | 644 ++++++++++++++++++++++++++++++++++ 4 files changed, 720 insertions(+) create mode 100644 classes/Spreadsheet.php create mode 100644 classes/SpreadsheetHeader.php create mode 100644 composer.json create mode 100644 composer.lock diff --git a/classes/Spreadsheet.php b/classes/Spreadsheet.php new file mode 100644 index 0000000..7083c75 --- /dev/null +++ b/classes/Spreadsheet.php @@ -0,0 +1,61 @@ +spreadsheet = new BaseSpreadsheet(); + $this->spreadsheet->getProperties() + ->setTitle($title) + ->setSubject($title) + ->setDescription($title); + $this->spreadsheet->getActiveSheet()->setTitle('unfilled'); + } + + public function headers(array $headers): self + { + $this->headers = $headers; + + return $this; + } + + public function generate() + { + $this->spreadsheet->setActiveSheetIndex(0); + $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($this->spreadsheet); + $writer->save('/home/pille/s.xlsx'); + $this->spreadsheet->disconnectWorksheets(); + unset($this->spreadsheet); + } + + public function sheet(string $name, array $data): self + { + if ('unfilled' === $this->spreadsheet->getActiveSheet()->getTitle()) { + $this->spreadsheet->getActiveSheet()->setTitle($name); + + return $this->fill($data); + } + + $this->spreadsheet->addSheet(new Worksheet($this->spreadsheet, $name)); + $this->spreadsheet->setActiveSheetIndexByName($name); + + return $this->fill($data); + } + + private function fill(array $data): self + { + $headers = collect($this->headers)->map(fn ($header) => $header->name)->toArray(); + $this->spreadsheet->getActiveSheet()->fromArray($headers, null, 'A1'); + $this->spreadsheet->getActiveSheet()->fromArray($data, null, 'A2'); + + return $this; + } +} diff --git a/classes/SpreadsheetHeader.php b/classes/SpreadsheetHeader.php new file mode 100644 index 0000000..aa7c8c3 --- /dev/null +++ b/classes/SpreadsheetHeader.php @@ -0,0 +1,10 @@ +=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/master" + }, + "time": "2019-04-30T12:38:16+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.2.0" +}