Exporter des données php sql vers excel

Fermé
kyuubi6 - 11 août 2010 à 16:35
kenzi rafik Messages postés 4 Date d'inscription lundi 24 décembre 2012 Statut Membre Dernière intervention 30 décembre 2012 - 30 déc. 2012 à 14:47
Bonjour,

Je viens de faire un petit programme en intranet (en php) pour ma société, c'est un programme d'encodage d'objet trouvé. Le soucis est que je viens d'apprendre qu'ils font des convocations avec nom, prenom, adresse, numero de reference de l'objet aux gens et pour cela ils fusionnent un fichier excel avec la convocation en word.
Je dois donc exporter des données de ma base de données dans un fichier excel.

Avec deux header :
header("Content-type : application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"test.xls\"");
j'arrive à créer un fichier excel et sur la page contenant ces header je fais ma requete mais ca m"µ'écrit n'importe comment dans mon fichier excel;
J'aimerais dans la colonne a le nom la b le prenom puis dans a2,a3,a4,a5... tous les noms et pour les b tous les prenoms.
quelqu'un peut il m'aider?

A voir également:

14 réponses

Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
11 août 2010 à 16:57
salut . Le format excel sera difficile a gerer.
en revanche, le format csv est compri par exel, et très facile a mettre en oeuvre:

c'est une fichier texte (ca c'est cool).
une ligne correspond à une ligne exel
les colones sont séparées par des ;

donc pour chaque ligne, tu fais
echo $nom . ";" . $prenom ...... "\r\n";

et voili voilou, un beau fichier comprit par excel
0
merci mais je fais comment pour dire que c'est au format cvs, je mets des header speciaux? je laisse ceux la?
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
Modifié par Nabla's le 11/08/2010 à 17:19
ca devrait passer en mettant juste le filename en .csv je pense. sinon dis moi, et on cherchera ensemble
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
11 août 2010 à 17:20
arf, en fait:
https://www.commentcamarche.net/contents/175-standard-mime-multipurpose-internet-mail-extensions

text/csv Fichiers texte avec séparation des valeurs csv
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
il parle du csv dans ce que tu me dis, je vais essayé et te tiens au courant
0
je viens d'essayer, quand excel s'ouvre j'ai un message ou je cliquer sur oui pour continuer, ma fois pas trop grave mais malgré que je sépare mes données par des ";" ca ne marche pas tout s'écrit l'un à la suite de l'autre... .
J'ai essayé un autre code qui fonctionne mais j'ai un soucis, le fichier excel que je crée je dois aller dans les processus arrêter execel.exe si je veux pouvoir le supprimer et j'ai une ligne dans mon code qui est sencé le supprimer ce fichier si il existe mais là j'ai une erreur.
voici mon code :
<?php
define("FILENAME","C:\wamp\www\ot/test2.xls");

if(file_exists(FILENAME))

{

unlink(FILENAME);

}
$excel=new COM("Excel.application");

$excel->sheetsinnewworkbook=1;

$excel->Workbooks->Add();

$book=$excel->Workbooks(1);

$sheet=$book->Worksheets(1);

$sheet->Name="Feuil";

$cell=$sheet->Range('A1');

$cell->EntireColumn->ColumnWidth=20;

$cell->value='Nom';

$cell->Font->bold = true;

$cell=$sheet->Range('B1');

$cell->EntireColumn->ColumnWidth=20;

$cell->value='Prenom';

$cell->Font->bold = true;

$cell=$sheet->Range('C1');

$cell->EntireColumn->ColumnWidth=30;

$cell->value='Adresse';

$cell->Font->bold = true;

$cell=$sheet->Range('D1');

$cell->EntireColumn->ColumnWidth=10;

$cell->value='CP';

$cell->Font->bold = true;

$cell=$sheet->Range('E1');

$cell->EntireColumn->ColumnWidth=20;

$cell->value='Ville';

$cell->Font->bold = true;

$cell=$sheet->Range('F1');

$cell->EntireColumn->ColumnWidth=20;

$cell->value='Numéro';

$cell->Font->bold = true;

mysql_connect('localhost','root','') ;

mysql_select_db('ot');

$select = mysql_query('select * from encodage') ;

$ligne=mysql_num_rows($select);

while($data=mysql_fetch_array($select,MYSQL_ASSOC))

{

$norep[]=$data['nom'];

$dateachat[]=$data['prenom'];

$client[]=$data['adresse'];

$adressecli[]=$data['cp'];

$typerepa[]=$data['ville'];

$serie[]=$data['pays'];

$revendeur[]=$data['numref'];

$adresserevendeur[]=$data['anneeref'];

}
for($i=2;$i<$ligne+2;$i++)

{

$cell=$sheet->Range('A'.$i);

$cell->value=$norep[$i-2];

$cell=$sheet->Range('B'.$i);

$cell->value=$dateachat[$i-2];

$cell=$sheet->Range('C'.$i);

$cell->value=$client[$i-2];

$cell=$sheet->Range('D'.$i);

$cell->value=$adressecli[$i-2];

$cell=$sheet->Range('E'.$i);

$cell->value=$typerepa[$i-2];

$cell=$sheet->Range('F'.$i);

$cell->value=$revendeur[$i-2].$adresserevendeur[$i-2];

}

$book->saveas(FILENAME);

unset($sheet);

unset($book);



?>
si quelqu'un a une idée je suis preneur.
merci d'avance et merci de m'avoir déjà aidé
0
bonjour j'ai toujours le problème que il me crée un fichier excel mais si je veux supprimer ce fichier je dois aller dans les processus arreter excel.exe puis supprimer mon fichier excel créer pour pouvoir en recréer un autre, svp aidez moi
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
16 août 2010 à 15:22
 j'ai un message ou je cliquer sur oui pour continuer, 
=> si tu veux de l'aide là dessus, donnes nous le message!

malgré que je sépare mes données par des ";" ca ne marche pas tout s'écrit l'un à la suite de l'autre
ca prend pas dans des colones différentes? Attention, il faut faire des fins de lignes : chr(13) . chr(10)
0
comment fais tu pour les fins de lignes? j'indique chr(113) ou chr(10) peux tu me donner un exemple genre echo $nom ; chr.. car je ne comprends pas bien.
Désolé d'avoir poster trois fois mon messages j'ai fait une erreur.
Pour le code que je montre plus haut, tout fonctionne appart que comme je dis et bien je ne "tue" pas l'instancion com de excel donc mon fichier excel se crée mais je ne sais pas l'effacer. J'aimerais qu'a chaque fois que j'appel ma page qui crée mon fichier excel elle écrase l'ancien fichier

merci
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
16 août 2010 à 16:06
pour les 3 messages, j'en ai supprimé 2 ... (surtout que c'était des bons gros messages)
t'as peut etre recu un email te le disant

pour le csv , quand 'tas fini ta ligne, tu fais echo chr(13) . chr(10) ;ca devrait faire un retour à la ligne dans ton fichier
0
bonjour,
je viens de tester echo chr(13) . chr(10) ; j'ai effectivement un saut de ligne, la ou ça coince c'est que malgré mon point virgule ça ne se met pas dans des colonne différente. Voici mon code :
header("Content-type : text/csv");
header("Content-Disposition: attachment; filename=\"test.csv\"");
$bdd = new PDO('mysql:host=localhost;dbname=ot', 'root', '');
$test = $bdd->query('select * from encodage') ;
while($donnees = $test->fetch())
{
echo $donnees['nom'].";".$donnees['prenom'] ;
echo chr(13) . chr(10) ;
}
j'aimerais que le nom soit dans la colonne A et le prenom dans la B
merci
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
18 août 2010 à 17:16
ouvres le fichier csv avec notepad, et fais moi un copier coller du contenu stp (juste un extrait)
0
voila ce que me donne en fichier text (enfin ouvert avec notepad)

deboyser;olivier
macors;romain

merci
0
alors apparement si j'enregistre le fichier au lieu de l'ouvrir directement avec excel ca fonctionne :)
0
dernier petit souci :(, je veux créer sur ma feuille excel un numéro de référence que j'importe de mes données de ma bdd, le souci est que mon num de reference est du type 1/10 par exemple ce qui fait que excel me met le 1 oct :'(.
Pour pallier à cela je met un "'" devant mon numéro mais excel me l'indique et ça c'est génant car après j'utilise mon fichier excel pour fusionner avec un word.
Je ne comprend pas car avec mon ancien code ça fonctionnait.
merci
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
20 août 2010 à 12:10
il y a surement des parametrages dans excel que je connais pas ... je pense qu'il faudrai poser la question dans le forum bureautique
0
kenzi rafik Messages postés 4 Date d'inscription lundi 24 décembre 2012 Statut Membre Dernière intervention 30 décembre 2012
26 déc. 2012 à 14:44
utiliser "\n"
0
kenzi rafik Messages postés 4 Date d'inscription lundi 24 décembre 2012 Statut Membre Dernière intervention 30 décembre 2012
30 déc. 2012 à 14:45
utiliser excel .= "l'entete \n"; pour passer a la deuxieme ligne
0
kenzi rafik Messages postés 4 Date d'inscription lundi 24 décembre 2012 Statut Membre Dernière intervention 30 décembre 2012
30 déc. 2012 à 14:47
utiliser excel .= "nom[ ] \t prenom[ ] \n"; pour passer a la deuxieme ligne
0
merci de toute ton aide, je vais me mettre en resolu et aller voir en bureautique :)
0