begin process at 2012 05 31 05:06:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Aide & documentation

 > 

pb export xls par php


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb export xls par php

mardi 20 octobre 2009 à 01:13:29 | pb export xls par php

miga003

bonjour à tous,
merci de me lire.
j'exporte des données depuis une base mysql en passant par php et j'extrait un tableau xls.
J'utilise :
header("Content-type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-disposition: attachment; filename=$nomFichier.xls");

puis
$csv_output="id\tRefClient\tbase\tNumeroDossier\n";
//La requete SQL
for($i=0;$i<= count($champ);$i++){
$sql="select * from dossiers where NumMED='".$champ[$i]."' ";
$res=mysql_query($sql) or print($sql);
$row=mysql_fetch_array($res);
$csv_output .= $row['id']."\t".$row['RefClient']."\t".$row['Base']."\t".$row['NumMED']."\n";
}
//affichage
print $csv_output;
mysql_close($link);
exit;

notez : $champ[$i] correspond aux variables récupérées par les checkboxes cochées par l'utilisateur qui a sélectionné les lignes du tableau qu'il veut exporter sous excel.

Bon, ça marche très bien, j'obtiens un tableau XLS... qui contient le même nombre de lignes qu'il y a d'enregistrements (ou de lignes sélectionnées) SAUF QUE certaines lignes sont "en blanc", c'est à dire sans valeurs dans les cellules.... et ce sont toujours les mêmes lignes... et quand je fais un export de la table en csv depuis phpmyadmin, ces lignes sont correctement exportées...
Le bug n'est pas aléatoire. Ce sont toujours les même lignes qui sont exportées 'à vide' dans excel.
Je ne vois absolument pas d'où vient le problème et mon client est pour l'instant magnanime mais quelque chose me dit que ça ne va pas durer longtemps...

Merci de votre aide.
mardi 20 octobre 2009 à 04:26:00 | Re : pb export xls par php

neigedhiver

Salut,

Est-il possible de voir un peu à quoi ressemblent ces lignes vides ?
Plus précisément, contiennent-elels des caractères spéciaux et/ou particuliers ? (par particulier, j'entends... euh... qui pourraient faire planter la bazar...)

Au lieu d'envoyer l'entête XLS, peux-tu envoyer :
header('Content-type: text/plain');
pour afficher le fichier directement à l'écran (c'est du debug, hein) histoire de voir à quoi ressemble vraiment ces lignes vides ? Importées dans Excel, tu ne verras pas grand chose, parce qu'Excel va traiter les données sans t'informer de ce qu'il fait. Regarder le fichier en texte brut te permettra d'avoir une vue de ce qu'Excel prend en entrée avant de zapper certaines lignes.

J'ai pas la solution là tout de suite, il faut d'abord savoir à quoi ressemble le fichier envoyé avant de faire un diagnostique ;)

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mardi 20 octobre 2009 à 11:13:35 | Re : pb export xls par php

miga003

Salut Neige et merci pour ta réponse;

J'ai suivi ton conseil et envoyé header('Content-type: text/plain');
Le résultat en texte est exactement le même qu'en export xls ou csv : certaines lignes existent mais elles sont totalement vides.
Je rappelle qu'en faisant l'export en csv à partir de l'interface phpmyadmin, les lignes existent et elles sont correctement remplies.
J'en déduirais que le problème ne vient pas du contenu de ma table mais de la façon dont je procède pour l'extraire...
et pourtant, si ça fonctionne très bien pour certaines lignes, pourquoi ça ne fonctionne pas pour d'autres ?
Bref je suis au point mort.
Si tu as d'autres pistes de recherches, merci d'avance.
mardi 20 octobre 2009 à 11:47:14 | Re : pb export xls par php

neigedhiver

T'as pas répondu à l'autre question ;) : elles contiennent des caractères spéciaux ces lignes ? Tu dois pouvoir le voir avec phpMyAdmin...
Parce que là, dans l'immédiat, c'est la seule piste que j'aurais...

Sinon, je suppose que la requête s'exécute correctement... ? et que la variable $row est correctement remplie par mysql_fetch_array() ?

Est-ce que tu as essayé en spécifiant manuellement l'encodage des caractères utilisé pour la connexion ? Je suis pas au top niveau de ce côté là, y'a deux requêtes à exécuter pour lui dire le charset utilisé... Mais je sais plus bien quoi, et j'ai pas vraiment le temps de faire des recherches poussées (déjà j'ai pas vraiment le temps de répondre lol)

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mercredi 21 octobre 2009 à 00:18:33 | Re : pb export xls par php

miga003

Pour la question des caractères spéciaux, je n'ai pas répondu parce que la réponse est la suivante : il n'y en a ni plus ni moins et ils sont pas plus spéciaux (é,è,ô,etc) que dans les lignes qui s'affichent correctement dans xls.
J'ai vérifié, $row... et j'ai même encodé utf8_encode($row['nom'])... ensuite j'ai juste exporté la cellule des identifiants (valeur numérique)... toujours les mêmes lignes vides.
Donc je repose le problème :
Quand j'exporte en csv à partir de phpmyadmin tout vabien
Quand j'exporte en xls à partir de php, des lignes, et toujours les mêmes apparaissent vides
J'ai regardé la structure du csv exporté : rien d'anormal, les champs sont tous délimités par ;
Je précise que j'ai testé mes lignes de code d'export sur une autre table dans une autre base (qui comporte des caractères spéciaux) et là pas de problème.
Le bug pourrait-il venir de ce que la table contient un fichier extrait depuis access (le machin de microsoft) ?
Une journée passée à chercher et à pas trouver.......
Si par hasard, un bon pèlerin de passage par ici venait à me donner un indice de recherche, il m'éviterait de devenir
A vot' bon coeur...


Cette discussion est classée dans : mysql, lignes, xls, header, row


Répondre à ce message

Sujets en rapport avec ce message

Export CSV (mise en page minimum!!!) [ par atomik29 ] Bonjour a tous.Voila mon probleme, j'utilise ce script pour exporter les champs de ma table dans un fichier csv.Le probleme c'est que je voudrai pouvo Extraire un fichier cvs d'une base Mysql avec condition [ par laurent2008 ] Bonjour, je suis débutant amateur en php. Je souhaite créer un fichier cvs avec les valeurs des differents champs (nom, prenom,age,groupe)à conditions probleme de header [ par saran01 ] Salut [^^happy13]; C'est mon script;je ne sais pas pourquoi il marche pas avec les fonctions de tomporisation de sortie ; avant il a marché mé au débu Checked : sélectionner checkall - impossible [ par chero9000kee ] Bonjour à tous, Je tiens à remercier "cod57" pour son aide et sa compétence de mon premier poste. Comme préciser dans le sujet, j'essaie depuis quel Recuprer 2 ligne de mysql dans un tableau [ par bazbazus ] bonjour a tous je veux ajouter 2 lignes dans une base de donnes j'ai fait la balise mais il affiche sa [img]http://www.trahison-dz.com/Mysql/proble Afficher un tableau mysql après une un coche de btn radio [ par abdeslam2009 ] Bonjours; je veux afficher un tableau mysql dès que je coche sur btn radio et sans clicker sur un bouton voilà un bout de code que j'ai fait: <inpu Requête SELECT sur plusieurs bases [ par sebalex ] Salut à tous. Je vais essayer d'être clair déjà que je suis complètement perdu. J'ai une base de données qui contient des montants versés (COMM_GESTI PHP - MYSQL [ par siref ] Bonjour, Voila je débute dans le php et mysql, je suis entraind de me créer un petit site web dans mon entreprise et je rencontre une erreur que j'ar liste déroulante - php - mysql [ par calypso78 ] Bonsoir, J'ai un petit blocage, j'ai réussi à faire une requête et à l'afficher dans un tableau, mais je bloque pour faire une liste déroulante avec affichage de données [ par tanoh ] Bonjour à tous, j'ai un problème avec mon script;en effet mon script doit permettre au client avec son login et son mot de passe de se connecter et d'


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales