Se connecter avec
S'enregistrer | Connectez-vous

Pb excel

Dernière réponse : dans Programmation

Encore moi :kaola: 
voilà j'ai besoin d'exploiter les données d'une bases de données Mysql et de les afficher dans un ficheir excel qui va s'ouvrir ds ma page web.
je suis en local sous esayphp avec une base mysql 4.0.15
ma page ne m'affiche pas d'erreur mais le fichier ne se crée pas, j'ai une page blanche à la place avec ma phrase :

"création du fichier en cours ..."

QQn peut m'aider SVP.

voici le code (c un peu long ;)  )


  1. <html>
  2. <head>
  3. <title>Entrenoo/Creation fichier Liste des fichiers reçus des URR</title>
  4. </head>
  5. <body>
  6. Création du fichier en cours...
  7. <script type="text/vbscript">
  8. <!--
  9.  
  10. Set monexcel = CreateObject("Excel.Application")
  11. monexcel.visible=true
  12.  
  13.  
  14. Set newBook = monexcel.Workbooks.Add
  15. newBook.Worksheets(1).Name="Liste des Fichiers reçus"
  16.  
  17.  
  18. monexcel.Selection.cells(1,1).value="Code Nidt"
  19. monexcel.Selection.cells(1,2).value="Nom du Site"
  20. monexcel.Selection.cells(1,3).value="Fichiers"
  21. monexcel.Selection.cells(1,4).value="Date Exportation"
  22. monexcel.Selection.cells(1,5).value="URR"
  23. monexcel.Selection.cells(1,6).value="Code DR"
  24. monexcel.Selection.cells(1,7).value="Maintenance"
  25. monexcel.Selection.cells(1,8).value="Prestataire"
  26. monexcel.Selection.cells(1,9).value="Mois"
  27.  
  28. Set objselect = monexcel.Range("A1","I1")
  29. objselect.Select
  30. monexcel.Selection.Font.Bold=true
  31.  
  32. <?php
  33.  
  34. $annee=2007;
  35. $SQL="SELECT f.code_nidt, f.Fichiers, u.dr, s. code_dr, s.nom_site, f.DateEntree, f.prestataire, f.mois, s.maintenance FROM MPM_Liste_Fichiers f, site s, MPM_URR u WHERE f.annee=2007 AND f.Fichiers=Site AND f.codePRE=4 AND f.code_nidt=s.code_nidt AND (u.code1=s.code_dr or u.code2=s.code_dr) order by u.dr, f.code_nidt ";
  36. $rs=mysql_query($SQL) or die (mysql_error());
  37. $nbligne=mysql_numrows($rs);
  38. $i=0;
  39. while($i<$nbligne)
  40. {
  41. $dtentree=mysql_result($rs,$i,"DateEntree");
  42. $code_nidt=mysql_result($rs,$i,"code_nidt");
  43. $nom_site=mysql_result($rs,$i,"nom_site");
  44. $dr=mysql_result($rs,$i,"dr");
  45. $code_dr=mysql_result($rs,$i,"code_dr");
  46. $maintenance=mysql_result($rs,$i,"maintenance");
  47. $prestataire=mysql_result($rs,$i,"prestataire");
  48. $mois=mysql_result($rs,$i,"mois");
  49.  
  50. $Libfic="Contrôle état général";
  51. }
  52. $i++;
  53. ?>
  54. monexcel.Selection.cells(<? $i ?>+1,1).NumberFormat="@"
  55. monexcel.Selection.cells(<? $i ?>+1,1).value="<? echo $code_nidt; ?>"
  56. monexcel.Selection.cells(<? $i ?>+1,4).NumberFormat="@"
  57. monexcel.Selection.cells(<? $i ?>+1,4).value="<? echo $dtentree; ?>"
  58. monexcel.Selection.cells(<? $i ?>+1,2).value="<? echo $nom_site; ?>"
  59. monexcel.Selection.cells(<? $i ?>+1,3).value="<? echo $Libfic; ?>"
  60. monexcel.Selection.cells(<? $i ?>+1,5).value="<? echo $dr; ?>"
  61. monexcel.Selection.cells(<? $i ?>+1,6).value="<? echo $code_dr; ?>"
  62. monexcel.Selection.cells(<? $i ?>+1,7).value="<? echo $maintenance; ?>"
  63. monexcel.Selection.cells(<? $i ?>+1,8).value="<? echo $prestataire; ?>"
  64. monexcel.Selection.cells(<? $i ?>+1,9).value="<? echo $mois; ?>"
  65.  
  66. Set objselect = monexcel.Range("A2","I"&"<? $nbligne+1 ?>")
  67. objselect.Select
  68. monexcel.Selection.Name="listeimport"
  69.  
  70. Set objselect = monexcel.Range("A1","I"&"<? $nbligne+1 ?>")
  71. objselect.Select
  72. monexcel.Selection.Borders(3).LineStyle=1 'bordures interieures
  73. monexcel.Selection.Borders(2).LineStyle=1 'bordures exterieures
  74. window.location="../accueil/accueil_MPM.php"
  75.  
  76. //-->
  77. </script>
  78. </body>
  79. </html>

Autres pages sur : excel

Lassé par la pub ? Créez un compte

voilà, Mis à part l'erreur de la fonction Connection(), ma requête ne fonctionnait pas car il y avait une erreur de syntaxe.

AND f.Fichiers="Site"

maintenant j'ai un autre pb :

Fatal error</b>: Maximum execution time of 180 seconds exceeded

le temps était fixé à 60 et j'ai testé avec 180 mais je n'ai tjrs rien, si j'augmente encore est ce que ça causer des pbs?
merci

faut etre un peu logique :p , si le script prend du temps, c'est qu'il y a un probleme, rallonger le temps maximum ne sert à rien!

  1. $i=0;
  2. while($i<$nbligne)
  3. {
  4. //...
  5. }
  6. $i++;

le $i++ est en dehors de la boucle, ce qui donne une boucle infinie

lol c vrai.
j'ai corrigé l'erreur, je n'ai plus de message d'erreur mais j'ai tjrs la page blanche sans rien.

voici le code source:

  1. <html>
  2. <head>
  3. <title>Entrenoo/Creation fichier Liste des fichiers reçus des URR</title>
  4. </head>
  5. <body>
  6. Création du fichier en cours...
  7. <script type="text/vbscript">
  8. <!--
  9.  
  10. Set monexcel = CreateObject("Excel.Application")
  11. monexcel.visible=true
  12.  
  13.  
  14. Set newBook = monexcel.Workbooks.Add
  15. newBook.Worksheets(1).Name="Liste des Fichiers reçus"
  16.  
  17.  
  18. monexcel.Selection.cells(1,1).value="Code Nidt"
  19. monexcel.Selection.cells(1,2).value="Nom du Site"
  20. monexcel.Selection.cells(1,3).value="Fichiers"
  21. monexcel.Selection.cells(1,4).value="Date Exportation"
  22. monexcel.Selection.cells(1,5).value="URR"
  23. monexcel.Selection.cells(1,6).value="Code DR"
  24. monexcel.Selection.cells(1,7).value="Maintenance"
  25. monexcel.Selection.cells(1,8).value="Prestataire"
  26. monexcel.Selection.cells(1,9).value="Mois"
  27.  
  28. Set objselect = monexcel.Range("A1","I1")
  29. objselect.Select
  30. monexcel.Selection.Font.Bold=true
  31.  
  32. monexcel.Selection.cells(408+1,1).NumberFormat="@"
  33. monexcel.Selection.cells(408+1,1).value="00011068H7"
  34. monexcel.Selection.cells(408+1,4).NumberFormat="@"
  35. monexcel.Selection.cells(408+1,4).value="09/02/2007"
  36. monexcel.Selection.cells(408+1,2).value="VILLEVOCANCE"
  37. monexcel.Selection.cells(408+1,3).value="Contrôle état général"
  38. monexcel.Selection.cells(408+1,5).value="Rhône Durance"
  39. monexcel.Selection.cells(408+1,6).value="H7"
  40. monexcel.Selection.cells(408+1,7).value="GIL Aubenas
  41. "
  42. monexcel.Selection.cells(408+1,8).value="GILM Tournon"
  43. monexcel.Selection.cells(408+1,9).value="2"
  44.  
  45. Set objselect = monexcel.Range("A2","I"&"409")
  46. objselect.Select
  47. monexcel.Selection.Name="listeimport"
  48.  
  49. Set objselect = monexcel.Range("A1","I"&"409")
  50. objselect.Select
  51. monexcel.Selection.Borders(3).LineStyle=1 'bordures interieures
  52. monexcel.Selection.Borders(2).LineStyle=1 'bordures exterieures
  53. window.location="../accueil/accueil_MPM.php"
  54.  
  55. //-->
  56. </script>
  57. </body>
  58. </html>

si tu as une seule erreur dans ton vbscript, l'excel n'est pas généré.
dans le source que tu m'as donné:
  1. monexcel.Selection.cells(408+1,7).value="GIL Aubenas
  2. "

il y a un saut de ligne en trop!

de plus ta boucle ne sert à rien, tu affectes aux memes variables, à la fin, tu n'as que le dernier enregistrement.

je vois pas où est le saut de ligne en trop
en fait c pas ma boucle qui ne sert à rien mais j'ai plutôt refermé les "}" au mauvais endroit.
il a fallu refermer le "}" du while après cette ligne

monexcel.Selection.cells(<? echo $i+1; ?>,9).value="<? echo $mois; ?>"

maintenant qd je regarde le code source, elle m'affiche tous les enregistrements et pas seulement le dernier.

mais sur ma page php je n'ai tjrs rien

salistase a dit :
oui et d'ailleurs je sais pas pourquoi il ya une nouvelle ligne.
je vais enlever les " " complètement pour cette ligne et voir si ça marche

t'y vas au pif, c'est ca :D 
c'est du vbscript, un langage! et les ", c'est pour délimiter une chaine!

salistase a dit :
et voilà que tu te moque de moi encore une fois

non, mais toi si

salistase a dit :

ça marche bien qd je les enlève, pas de saut de ligne mais j'ai tjrs rien

qu'est ce qui te permet de dire que ca marche bien?
pas de message d'erreur ne veut pas dire pas d'erreur.

  1. monexcel.Selection.cells(408+1,7).value=GIL Aubenas

ne veut strictement rien dire!

pour t'en assurer, prend le code source (la sortie sans le php) que tu as posté, sauvegarde dans un .html, enleve le retour à la ligne avant le " puis ouvres le avec explorer!
Lassé par la pub ? Créez un compte
Tom's guide dans le monde