PHP Spreadsheets

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jorn Reed

Jorn Reed

18/07/2022 17:15:24
Quote Anchor link
Hoi, ik gebruik sinds vandaag php spreadsheets, geinstalleerd met composer.
Mijn code werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    require('vendor/autoload.php');
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Hello World !');

    $writer = new Xlsx($spreadsheet);
    $writer->save(rand().'.xlsx');
?>


Alleen vroeg ik me af of er een functie is waarmee ik het aangemaakte excel bestand door de browser kan laten downloaden. Nu plaatst hij het aangemaakte bestand stilletjes in mijn root folder van mijn project.

Ik kon zo gauw geen oplossing vinden.
 
PHP hulp

PHP hulp

04/02/2023 15:58:26
 
- Ariën  -
Beheerder

- Ariën -

18/07/2022 17:22:36
Quote Anchor link
Een geforceerde download in PHP kan je hiermee bewerkstelligen.

https://www.php.net/manual/en/function.readfile.php
 
Rob Doemaarwat

Rob Doemaarwat

18/07/2022 17:45:25
Quote Anchor link
Je hoeft 'm niet eerst als temp bestand op te slaan (en dan weer uit te serveren, en vervolgens weer op te ruimen). Nadat je de download headers hebt gegeven doe je gewoon een save naar php ://output
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

header('Content-Type: application/xlsx');
header('Content-Disposition: attachment; filename=bla.xlsx');
header('Content-Transfer-Encoding: binary');
$writer->save('php://output');

?>
Gewijzigd op 18/07/2022 20:56:10 door Rob Doemaarwat
 
Jorn Reed

Jorn Reed

19/07/2022 08:51:33
Quote Anchor link
Ah oke top!, ik ga het straks gelijk even uitproberen!

Toevoeging op 19/07/2022 08:57:28:

Rob Doemaarwat op 18/07/2022 17:45:25:
Je hoeft 'm niet eerst als temp bestand op te slaan (en dan weer uit te serveren, en vervolgens weer op te ruimen). Nadat je de download headers hebt gegeven doe je gewoon een save naar php ://output
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

header('Content-Type: application/xlsx');
header('Content-Disposition: attachment; filename=bla.xlsx');
header('Content-Transfer-Encoding: binary');
$writer->save('php://output');

?>


Jup het werkt prima nu met deze code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
    require('vendor/autoload.php');
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', 'Hello World !');

    $writer = new Xlsx($spreadsheet);
    header('Content-Type: application/xlsx');
    header('Content-Disposition: attachment; filename='.rand().'.xlsx');
    header('Content-Transfer-Encoding: binary');
    $writer->save('php://output');


Ik snap alleen de `php://output` niet echt. Ik heb dat verder nooit nodig gehad.

Toevoeging op 19/07/2022 11:05:46:

Is er eventueel ook nog de mogelijkheid om een .xlsx bestand te genereren zonder composer package?

Het zit namelijk zo, ik werk aan een Drupal project. Maar die staat al op een shared hosting, en het is enorm veel gedoe om een composer package in een custom module te slepen en werkend te krijgen.
 



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.