Aide sur un "Php To Excel"

Résolu/Fermé
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 - Modifié le 31 janv. 2018 à 10:27
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 - 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 voir également:

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
31 janv. 2018 à 14:47
Bonjour,
Commence par vérifier l'encodage de tes fichiers sources. Assure toi qu'ils sont en utf8 sans BOM
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8


0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
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é:)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
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 ! )
0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
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
0