Aide sur un "Php To Excel"

[Résolu/Fermé]
Signaler
Messages postés
2667
Date d'inscription
jeudi 2 juillet 2015
Statut
Membre
Dernière intervention
30 juillet 2021
-
Messages postés
2667
Date d'inscription
jeudi 2 juillet 2015
Statut
Membre
Dernière intervention
30 juillet 2021
-
Bonjour à tous,

Suite à une demande , je dois pouvoir extraire une base de données (MySql) en excel par simple clic sur un bouton. La création du fichier doit pouvoir être " à la volée"

Actuellement j'essaie d'utiliser la bibliothèque PHPExcel ( trouvable ici : https://github.com/PHPOffice/PHPExcel mais cette dernière ne me sort que des fichiers corrompus.

Voici ce que donne mon script de génération actuel :

<?php
if(isset($_POST['excel'])) {

// création des objets de base et initialisation des informations d'entête
$compteur = 1;
try{

$classeur = new PHPExcel;

$classeur->getProperties()->setCreator('test');

$classeur->setActiveSheetIndex(0);

$feuille=$classeur->getActiveSheet();


// ajout des données dans la feuille de calcul



$feuille->setTitle('Etat de parc');

$feuille->setCellValueByColumnAndRow(0, 1, 'Les colonnes débutent à 0 et les lignes débutent à 1');

$feuille-> SetCellValue('A1', 'Immatriculation');
$feuille->SetCellValue('B1','Date d\'entrée');

$liste = $pdo->listActivevehicule();
foreach ($liste as $vehicule) {
$compteur=$compteur++;
$feuille->SetCellValue('A'.$compteur,$vehicule['immatriculation']);
$feuille->SetCellValue('B'.$compteur,$vehicule['dateEntree']);
}

// envoi du fichier au navigateur

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

header('Content-Disposition: attachment;filename="EtatParc.xlsx"');

//header('Cache-Control: max-age=0');

$writer = PHPExcel_IOFactory::createWriter($classeur, 'Excel2007');

$writer->save('php://output');
}
catch(Exception $e){
echo 'Exception reçue : ', $e->getMessage(), "\n";
}

}

echo '<form method="post" action="' . $_SERVER['SCRIPT_NAME'] . '">';

echo '<div class="col-md-4 col-md-offset-4"><input type="submit" value="Exporter vers Excel" name="excel" /></div>';


echo '</form></Br>';?>


(Je précise que ce script vient essentiellement du fichier Example fourni avec la bibliothèque)

Auriez-vous déjà utilisé cette bibliothèque ? Pouvez - vous me dire d'où vient cette corruption de fichier et cas échéant auriez vous une autre bibliothèque / Méthode afin de faire ce qui m'a été demandé.

Merci d'avance

A Vaincre sans péril, on triomphe sans gloire.
Pierre Corneille, Le Cid 

1 réponse

Messages postés
33154
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juillet 2021
3 643
Bonjour,
Commence par vérifier l'encodage de tes fichiers sources. Assure toi qu'ils sont en utf8 sans BOM
https://www.commentcamarche.net/faq/47069-html-php-caracteres-accentues-et-l-utf8


Messages postés
2667
Date d'inscription
jeudi 2 juillet 2015
Statut
Membre
Dernière intervention
30 juillet 2021
1 598
Bonjour Jordane,

Déjà fait, et pourtant le fichier est toujours corrompu. La ou cela me semble bizarre c'est le contenu du fichier Corrompu ... il contient... le code de la page qui fait appel à lui... pas les données que PhpExcel est sensé mettre . ( La corruption vient assurément de la)

As-tu déjà eu a faire a ce type de problématique d'exporter tes données en Excel? Car si tu as une autre manière de faire je suis pas limité:)
Messages postés
33154
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juillet 2021
3 643
En relisant ton code.. je pense déjà voir une première erreur...
Tu dois absolument séparer le script qui génère le fichier excel du reste de ton code....
Donc :
- Un fichier php pour ton formulaire
- Un fichier php pour la génération du xlsx (avec UNIQUEMENT les instructions qui génèrent le document et rien d'autre ! )
Messages postés
2667
Date d'inscription
jeudi 2 juillet 2015
Statut
Membre
Dernière intervention
30 juillet 2021
1 598
Bonjour,

T'es un génie en faite ? :)

En plus, du fait que ça fasse plus propre j'ai pu trouver le problème.

J'ai compris que le soucis venait de mon header qui devait faire planter le script

Merci Beaucoup.

Je passe le sujet en résolu