Bonjour,
merci pour cet agrable outil, je voudrais savoir comment russir se connecter une base de donnes pour excuter des requtes SQL, pour pouvoir insrer le rsultat de la requte dans le fichier excel??
Version imprimable
Bonjour,
merci pour cet agrable outil, je voudrais savoir comment russir se connecter une base de donnes pour excuter des requtes SQL, pour pouvoir insrer le rsultat de la requte dans le fichier excel??
Puis-je avoir un dbut de test pour pouvoir vous aider.
Une petite requte sql histoire de pouvoir tayer mes propos afin de vous faciliter la comprhension :)
tout d'abord j'ouvre une page excel(repport.xls) dans laquelle je veux rajouter des informations venant d'une requte SQL.
la requte est la suivante:
je veux l'insrer dans('J5'), j'ai essay ca mais ca marche pas:Code:
1
2
3
4 $query = SELECT nom, numero, datedenaissance from fournisseur where numero='".safestring($num)."'; $res = executeRequest($query); $row = mysql_fetch_array($res);
Code:
1
2
3
4
5
6
7
8
9
10
11
12 $objReader = PHPExcel_IOFactory::createReader('Excel5'); $objPHPExcel = $objReader->load("repport.xls"); $objPHPExcel->getActiveSheet()->setCellValue('J5', ".$row['numero']."); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('repport2.xls'); header('Content-type: application/vnd.ms-excel'); header('Content-Disposition:inline;filename= repport2.xls '); $objWriter->save('php://output');
Il suffit alors de raliser une boucle au dpart de votre requte SQL, et d'identifier vos cellule excel par leurs emplacement et non par leur noms
dite moi si cela vous aide ?Code:
1
2
3
4
5
6
7
8
9 //A1 se trouve en position 0,0 //j5 se trouve en position 9,4 $i=4; while($row = mysql_fetch_array($res)){ $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9,$i, ".$row['numero']."); //on incrémente pour le passage à la cellule suivante $i++; }
j'ai cette erreur:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' on line 25
ligne 25 c'est:
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9,$i, ".$row['projectcode'].");
essayez ceci
Code:
1
2 $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9,$i, $row['projectcode']);
ca m'affiche une page avec des caractres bizarre:
ࡱ;
B=%r8X"1Arial1*Arial1*Arial1*Arial1xArial1T
Arial 1 1 # 1 111 1 11111 1 1 1 11111# 1 1 1 !!83ffff̙̙3f3̙fff3f3f33333f33333+
Reportg:PROJECT NAME / NUMBER::*ADDENDUM / MODIFICATION OF NAME:SUPPLIER NAME
reprenons depuis le dbut , est-ce que ceci fonctionne
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel5.php'; $workbook = new PHPExcel; $sheet = $workbook->getActiveSheet(); $sheet->setCellValue('A1','MaitrePylos'); $writer = new PHPExcel_Writer_Excel5($workbook); $writer->save('php://output');
je viens d'essayer votre code mais ca ne marche pas ca m'affiche des caractres bizarre:
ࡱ; B=%r8X"1Calibri 83ffff̙̙3f3̙fff
tenter d'enregistrer le ficheir plutt que de l'ouvrir
Code:
1
2 $writer->save('test.xls');
aprs l'enregisrement oui ca marche mais moi je dois l'afficher directement sans avoir a l'enregistrer :cry:
une autre question: quand je mets:
ca me rempli juste une ligne mais dans ma base j'ai plusieurs ligne, comment pourrais je faire pour afficher tous? :cry:Code:
1
2 $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(0, $j, $numéro);
cfr plus haut
Code:
1
2
3
4
5
6
7
8
9
10 //A1 se trouve en position 0,0 //j5 se trouve en position 9,4 $i=4; while($row = mysql_fetch_array($res)){ $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9,$i, ".$row['numero']."); //on incrémente pour le passage à la cellule suivante $i++; }
Cela sous entend que tu as rgler tes problmes de caractres ?
je vois maintenant que tu utilises la variable $sheet
as-tu bien fait ?
Code:$sheet = $objPHPExcel->getActiveSheet();
Merci beaucoup pour votre aide.
Non Non je les ai toujours pas rgl, j'tais juste entrain d'essay pour les couleurs. aprs enregistrement tout s'affiche trs bien mais le problme c'est qu'on me demande d'afficher le fichier directement sans avoir a l'enregistrer et je ne sais vraiment pas comment faire:cry:
tes vous sr qu'il n'y a pas de caractres blanc qui passe au moment de la gnration de votre script ?
Il me semble que votre contient une ou deux erreurs de conception, mais je vais m'en tenir au fichier Excel.
Si vous faites ceci
Alors vous pouvez vous simplifiez la vie et crireCode:
1
2 $sheet = $objPHPExcel->getActiveSheet();
dans votre code la baliseCode:
1
2
3
4
5 $sheet->setCellValueByColumnAndRow(9,$i, $rowHead['projectcode']); //au lieu de $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(9,$i, $rowHead['projectcode']);
est quelque lignes plus bas, est-ce aussi le cas dans votre fichier? si oui, supprimer ces espacesCode:<?php
plus bas dans le code, vous utilisez des balises HTML
a remplacer parCode:<br>
et pour que le passage la ligne ce fasse , il faut activer dans la celulle le mode 'wrap', voir mon tuto.Code:"\n"
Malheureusement ca ne change rien du tout.
J'ai exactement le mme problme,
l'ouverture du xls sur navigateur => problme de caractres
en sauvegardant => ca marche niquel.
edit : il semblerait que l'erreur soit le fait qu'il y est du html avant.
Salut Te-san alors tu as pu rgler ton problme si oui, commet as tu fait car j'ai toujours le mme problme moi.
Mon problme tait qu'il y avait du code html avant le code php.
J'ai simplement fait un lien qui ne renvoyait aucun html, (simplement la page contenant le code php).