Excel bestanden genereren met PhpSpreadsheet
Ik vond onder andere PhpSpreadsheet maar buiten downloaden van de bestanden kan er niets :(
Uit de handleiding: include 'vendor/autoload.php';
Er is geen map vendor en er is ook geen bestand autoload.
Jan
Gewijzigd op 14/12/2023 17:07:13 door - Ariën -
composer inladen. Dan krijg je een map /vendor met de autoloader.
Composer is super makkelijk. Je kan daarmee heel eenvoudig je packages beheren, toevoegen en updaten.
Binnenkort komt er een artikeltje over Composer op PHPhulp. Maar je kan al vast aan de slag. ;-)
Die moet je dan via Composer is super makkelijk. Je kan daarmee heel eenvoudig je packages beheren, toevoegen en updaten.
Binnenkort komt er een artikeltje over Composer op PHPhulp. Maar je kan al vast aan de slag. ;-)
Gewijzigd op 14/12/2023 13:07:19 door - Ariën -
Ik heb geen composer. Ik composteer niet.
Toevoeging op 14/12/2023 17:06:55:
Zonder Composer kan ook, maar dan moet je weten wat je allemaal moet includeren. En uit ervaring weet ik dat veel auteurs van scripts dat niet uitleggen. Maar de meeste ervaren webdevelopers gebruiken Composer om alles in een handomdraai te installeren.
phpMailer, Monolog, classes voor API's op social media...
Het kan allemaal.
Ik heb net het artikel over Composer afgewerkt op PHPhulp, en die komt zeer binnenkort online.
Eerst nog even alles aandachtig doorlezen. :-)
Gewijzigd op 14/12/2023 17:07:50 door - Ariën -
- Ariën - op 14/12/2023 14:17:04:
Ik heb net het artikel over Composer afgewerkt op PHPhulp, en die komt zeer binnenkort online.
Eerst nog even alles aandachtig doorlezen. :-)
Eerst nog even alles aandachtig doorlezen. :-)
bij voorbaat dank
Veel succes! :)
Ik krijg dit terug
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Package: php, Version: ^8.0
Package: ext-ctype, Version: *
Package: ext-dom, Version: *
Package: ext-fileinfo, Version: *
Package: ext-gd, Version: *
Package: ext-iconv, Version: *
Package: ext-libxml, Version: *
Package: ext-mbstring, Version: *
Package: ext-simplexml, Version: *
Package: ext-xml, Version: *
Package: ext-xmlreader, Version: *
Package: ext-xmlwriter, Version: *
Package: ext-zip, Version: *
Package: ext-zlib, Version: *
Package: maennchen/zipstream-php, Version: ^2.1 || ^3.0
Package: markbaker/complex, Version: ^3.0
Package: markbaker/matrix, Version: ^3.0
Package: psr/http-client, Version: ^1.0
Package: psr/http-factory, Version: ^1.0
Package: psr/simple-cache, Version: ^1.0 || ^2.0 || ^3.0
Package: voku/anti-xss, Version: ^4.1
Package: ext-ctype, Version: *
Package: ext-dom, Version: *
Package: ext-fileinfo, Version: *
Package: ext-gd, Version: *
Package: ext-iconv, Version: *
Package: ext-libxml, Version: *
Package: ext-mbstring, Version: *
Package: ext-simplexml, Version: *
Package: ext-xml, Version: *
Package: ext-xmlreader, Version: *
Package: ext-xmlwriter, Version: *
Package: ext-zip, Version: *
Package: ext-zlib, Version: *
Package: maennchen/zipstream-php, Version: ^2.1 || ^3.0
Package: markbaker/complex, Version: ^3.0
Package: markbaker/matrix, Version: ^3.0
Package: psr/http-client, Version: ^1.0
Package: psr/http-factory, Version: ^1.0
Package: psr/simple-cache, Version: ^1.0 || ^2.0 || ^3.0
Package: voku/anti-xss, Version: ^4.1
En wat nu?
Toevoeging op 21/12/2023 11:59:31:
Sorry zat bij scripts en niet bij tutorials :)
Echter plots kreeg ik de vraag
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
Could not find package composer.json.
Pick one of these or leave empty to abort:
[0] jbzoo/composer-diff
[1] jbzoo/composer-graph
[2] imanghafoori/composer-json
[3] clue/graph-composer
[4] jms/composer-deps-analyzer
Pick one of these or leave empty to abort:
[0] jbzoo/composer-diff
[1] jbzoo/composer-graph
[2] imanghafoori/composer-json
[3] clue/graph-composer
[4] jms/composer-deps-analyzer
Ik heb maar iets geprobeerd.
Jan
Als ik dit uitvoer, dan krijg ik het package gewoon:
Gewijzigd op 21/12/2023 12:26:06 door - Ariën -
toch beweging en hoopte dat het goed was :)
Echter nog steeds niet ok :( Als eerste starte ik in de verkeerde map. Ook dat is me niet duidelijk waar het commando echt moet starten (volgens de tut de map van je project) dus starten ik in D:\Documenten\WebSites\one\janr.be\httpd.www\php\PhpSpreadsheet-master en kreeg de melding
Zoals in het begin al vermeld: Ik ken NIETS van composer!
Een map hoger enkel een melding "wat ben ik aan het doen"
Nu heb ik de melding
Jan
Wat zou het leven eenvoudig zijn als de ontwerper dergelijke zaken gewoon 1 keer zelf doe en dan oplaad als "onmiddellijk te gebruiken.zip" :)
Hoe kan ik weten dat na "require" de tekst "phpoffice/phpspreadsheet" moet komen? Ik had met dit commando Echter nog steeds niet ok :( Als eerste starte ik in de verkeerde map. Ook dat is me niet duidelijk waar het commando echt moet starten (volgens de tut de map van je project) dus starten ik in D:\Documenten\WebSites\one\janr.be\httpd.www\php\PhpSpreadsheet-master en kreeg de melding
Zoals in het begin al vermeld: Ik ken NIETS van composer!
Een map hoger enkel een melding "wat ben ik aan het doen"
Nu heb ik de melding
Code (php)
1
Uncaught Error: Object of class Composer\Autoload\ClassLoader could not be converted to string
Jan
Wat zou het leven eenvoudig zijn als de ontwerper dergelijke zaken gewoon 1 keer zelf doe en dan oplaad als "onmiddellijk te gebruiken.zip" :)
Misschien is het handiger om voortaan eerst een tutorial te lezen, en niet impulsief halverwege aan de slag te gaan?
Wel heb ik inmiddels in de tutorial aangegeven dat naar de eerste keer dat je een require uitvoert, dat er dan een composer.json wordt aangemaakt.
Maar ik zal kijken voor verdere verbeteringen.
Maar over je probleem. Wat heb je nu precies gedaan toen je opnieuw vanaf nul begon? Heb je het juiste pakket geïnstalleerd? Wat staat er in composer.json?
Toevoeging op 22/12/2023 10:06:30:
Jan R op 22/12/2023 07:47:44:
Wat zou het leven eenvoudig zijn als de ontwerper dergelijke zaken gewoon 1 keer zelf doe en dan oplaad als "onmiddellijk te gebruiken.zip" :)
Dan haal je wel de kracht van Composer weg. Die installeert niet alleen maar controleert ook of je pakket aan de vereisten voordoet. Heb je een oude PHP, of mis je een bepaalde vereiste PHP extensie? Dan geeft Composer dat netjes aan en stopt het installeren.
Gewijzigd op 22/12/2023 09:57:59 door - Ariën -
- Ariën - op 22/12/2023 09:51:07:
Ik heb nergens 'composer require composer.json' gezegd. Als voorbeeld noemde ik het simpele Monolog.
Weet ik. Ik heb dan ook alles gelezen voor ik er aan begon. Ik heb enkel de vraag gesteld "HOE kan ik weten wat ik daar moet schrijven/tijpen"
- Ariën - op 22/12/2023 09:51:07:
Maar ik zal kijken voor verdere verbeteringen.
Graag want veel is mij nog niet duidelijk.
Maar over je probleem. Wat heb je nu precies gedaan toen je opnieuw vanaf nul begon? Heb je het juiste pakket geïnstalleerd? Wat staat er in composer.json?
En hier zie ik dan dat dit de tekst is welke ik had moeten gebruiken :)
composer installatie Composer-Setup.exe 1762kB van de in de tut vermelde website onder Windows Installer
PhpSpreadsheet-master van https://github.com/PHPOffice/PhpSpreadsheet
- Ariën - op 22/12/2023 09:51:07:
Dan haal je wel de kracht van Composer weg. Die installeert niet alleen maar controleert ook of je pakket aan de vereisten voordoet. Heb je een oude PHP, of mis je een bepaalde vereiste PHP extensie? Dan geeft Composer dat netjes aan en stopt het installeren.
Jan R op 22/12/2023 07:47:44:
Wat zou het leven eenvoudig zijn als de ontwerper dergelijke zaken gewoon 1 keer zelf doe en dan oplaad als "onmiddellijk te gebruiken.zip" :)
Dan haal je wel de kracht van Composer weg. Die installeert niet alleen maar controleert ook of je pakket aan de vereisten voordoet. Heb je een oude PHP, of mis je een bepaalde vereiste PHP extensie? Dan geeft Composer dat netjes aan en stopt het installeren.
Akkoord maar voor idioten zoals ik helpt het wel :)
Mijn testbestandje
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
require require_once $_SERVER['DOCUMENT_ROOT'] . '/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');
?>
require require_once $_SERVER['DOCUMENT_ROOT'] . '/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');
?>
Gewijzigd op 22/12/2023 13:37:42 door Jan R
Regel 2 gaat niet helemaal lekker? Is het require() of require_once()?
Ik wil niet bot zijn, maar ik kan mij niet echt indenken dat je alles eerst goed gelezen hebt?
Wel ga ik wat correcties aan het artikel toevoegen, maar ik ben benieuwd waarom je opeens in PHP (!) require en require_once gebruikt.
Dus begin eerst eens bij het begin en zodra je de voorbeelden hebt geprobeerd, dan aan de slag met je eigen praktijk. Nu sla je blijkbaar belangrijke stappen over, en ga je zelf maar wat verzinnen wat niet tot gewenste resultaten zal leiden.
Gewijzigd op 22/12/2023 14:41:47 door - Ariën -
Toevoeging op 23/12/2023 12:05:29:
Na dit stomme copy/paste probleempje (ik zag het gewoon niet)
Ben ik volop bezig met mijn bestand aan te maken. Lukt goed.
Wel veel opzoeken via https://phpspreadsheet.readthedocs.io/en/latest/topics/accessing-cells/
Wat ik niet vind is doortrekken van formules. (en: Pull down/right/...) Iemand hierin al gelukt?
"fromArray" is alvast een tijdspaarder maar toch niet hetzelfde.
Jan
@arieën bedankt voor de hulp zover. Probleem lag dus bij de dubbele require en niet zozeer bij composer.