Aide sur un "Php To Excel" [Résolu]

diablo13800 1091 Messages postés jeudi 2 juillet 2015Date d'inscription 7 février 2018 Dernière intervention - 31 janv. 2018 à 10:15 - Dernière réponse : diablo13800 1091 Messages postés jeudi 2 juillet 2015Date d'inscription 7 février 2018 Dernière intervention
- 31 janv. 2018 à 16:52
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 
Afficher la suite 

4 réponses

Répondre au sujet
jordane45 19962 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 14 février 2018 Dernière intervention - 31 janv. 2018 à 14:47
0
Utile
3
Bonjour,
Commence par vérifier l'encodage de tes fichiers sources. Assure toi qu'ils sont en utf8 sans BOM
http://www.commentcamarche.net/faq/47069-html-php-caracteres-accentues-et-l-utf8


diablo13800 1091 Messages postés jeudi 2 juillet 2015Date d'inscription 7 février 2018 Dernière intervention - 31 janv. 2018 à 15:43
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é:)
jordane45 19962 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 14 février 2018 Dernière intervention - 31 janv. 2018 à 15:58
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 ! )
diablo13800 1091 Messages postés jeudi 2 juillet 2015Date d'inscription 7 février 2018 Dernière intervention - 31 janv. 2018 à 16:52
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
Commenter la réponse de jordane45