Excel bestanden genereren met PhpSpreadsheet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

14/12/2023 11:51:09
Quote Anchor link
Hoe kan ik php Excel bestanden laten maken?

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 -
 
PHP hulp

PHP hulp

27/04/2024 10:08:47
 
- Ariën  -
Beheerder

- Ariën -

14/12/2023 12:55:39
Quote Anchor link
Die moet je dan via composer inladen. Dan krijg je een map /vendor met de autoloader.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
composer require phpoffice/phpspreadsheet


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 -
 
Jan R

Jan R

14/12/2023 13:48:34
Quote Anchor link
Ik heb geen composer. Ik composteer niet.
 
- Ariën  -
Beheerder

- Ariën -

14/12/2023 14:17:04
Quote Anchor link
Tijd om er aan te beginnen dus. ;-)

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 -
 
Jan R

Jan R

14/12/2023 18:33:36
Quote Anchor link
- 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. :-)


bij voorbaat dank
 
- Ariën  -
Beheerder

- Ariën -

14/12/2023 20:49:12
Quote Anchor link
Hij staat online bij de tutorials!
Veel succes! :)
 
Jan R

Jan R

21/12/2023 11:36:32
Quote Anchor link
Eindelijk tijd had om eens te kijken :)

Ik krijg dit terug
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


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)
PHP script in nieuw venster Selecteer het PHP script
1
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


Ik heb maar iets geprobeerd.

Jan
 
- Ariën  -
Beheerder

- Ariën -

21/12/2023 12:14:39
Quote Anchor link
Kan je vertellen wat je precies doet? Het lijkt gezien je resultaat erop dat je composer met composer wilt downloaden, en dat je nu wat voor jou onnodige packages staat te installeren :-D

Als ik dit uitvoer, dan krijg ik het package gewoon:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
composer require phpoffice/phpspreadsheet
Gewijzigd op 21/12/2023 12:26:06 door - Ariën -
 
Jan R

Jan R

22/12/2023 07:47:44
Quote Anchor link
Hoe kan ik weten dat na "require" de tekst "phpoffice/phpspreadsheet" moet komen? Ik had met dit commando
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
composer require composer.json
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Root package 'phpoffice/phpspreadsheet' cannot require itself in its composer.json

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)
PHP script in nieuw venster Selecteer het PHP script
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" :)
 
- Ariën  -
Beheerder

- Ariën -

22/12/2023 09:51:07
Quote Anchor link
Ik heb nergens 'composer require composer.json' gezegd. Als voorbeeld noemde ik het simpele Monolog.

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 -
 
Jan R

Jan R

22/12/2023 13:33:31
Quote Anchor link
- 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?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
{
    "require": {
        "phpoffice/phpspreadsheet": "^1.29"
    }
}

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:
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)
PHP script in nieuw venster Selecteer het PHP script
1
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');
?>
Gewijzigd op 22/12/2023 13:37:42 door Jan R
 
- Ariën  -
Beheerder

- Ariën -

22/12/2023 13:42:22
Quote Anchor link
require require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';

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 -
 
Jan R

Jan R

23/12/2023 09:48:08
Quote Anchor link
copy/paste probleempje :)

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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.