rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Resultat requete dans excel avec PHP

angovant, le lundi 5 mai 2008 à 14:35:01
Bonjour,

Je ne suis pas un pro du php, mais j'essaie de me depatouller, donc un peu d'indulgence avec mes questions de novice.
Voila, avec le code ci-dessous j'arrive à afficher la reponse de ma requete lorsque je suis en localhost.
par contre quand je suis suis sur le server ou se trouve la base de données, j'obtiens ceci comme reponse:(Warning: (null)(): Unable to obtain IDispatch interface for CLSID {00024500-0000-0000-C000-000000000046}: Accès refusé. in C:\intranet\www\flaptest\common\test.php on line 9

Fatal error: Call to a member function on a non-object in C:\intranet\www\flaptest\common\test.php on line 11
)

Quelqu'un peut me dire le probleme. j'ai tous les droits d'écriture et de lecture sur le server


Merci pour votre coup de mains




if(file_exists(FILENAME))
{
unlink(FILENAME);
}

$excel=new COM("Excel.application");//Instanciation de l'objet COM
$excel->sheetsinnewworkbook=1;//Une seule feuille dans le document
$excel->Workbooks->Add();//Ajout d'un classeur
$book=$excel->Workbooks(1);//$book contient le classeur actif
$sheet=$book->Worksheets(1);//$sheet contient la feuille active
$sheet->Name="Graphique";//Attribution d'un nom à la feuille

$cell=$sheet->Range('A1');
$cell->value='Responsable Commercial'; //Titre de mes colonnes
$cell=$sheet->Range('B1');
$cell->value='Chargé Affaires'; //Nombre de questions qu'on a posées


for ($i=2;$i<7;$i++)
{
$cell=$sheet->Range('A'.$i);
$cell->value='Zéro'.($i-1); // Zéros2 jusquà Zéros6
$cell=$sheet->Range('B'.$i);
$cell->value=2*$i; // de 4 à 12 questions
}*/

$book->saveas();//Enregistrement du document
unset($sheet);//Libération de $sheet
unset($book);//Libération de $book
$excel->Workbooks->Close();//Fermeture du classeur
$excel->Quit();//On quitte Excel
unset($excel);//Libération de l'objet $excel
?>
Configuration: Windows XP
Internet Explorer 6.0
Configuration: Windows XP
Internet Explorer 6.0
Répondre à angovant  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
zavenger, le lundi 5 mai 2008 à 14:39:18
Bonjour
Une question stupide. Il y a excel d'installé sur ton serveur (ce qui normalement est assez rare sur un serveur) ?
Répondre à zavenger

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
angovant, le mardi 6 mai 2008 à 09:41:38
En quoi ma question est -elle stupide?

il faudrait donc désinstaller excel ? je ne pige pas trop ou tu voudrais en venir, soit un peu plus précis dans ta réponse.
Répondre à angovant

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
zavenger, le mardi 6 mai 2008 à 10:03:41
Pardon. JE posait une question peut etre stupide. As tu excel sur ton serveur?
Répondre à zavenger

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
angovant, le mardi 6 mai 2008 à 10:14:24
Oui, Excel a été installé sur le server à ma demande et j'avais deja le message d'erreur avant même que je face la demande.
Répondre à angovant

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
zavenger, le mardi 6 mai 2008 à 10:21:27
Quelle est la ligne 1 de ton code sur laquelle cela s'arrete?
Répondre à zavenger

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
angovant, le mardi 6 mai 2008 à 10:57:51
L'arrêt se fait sur le debut du code :$excel=new COM("Excel.application");
pour info: lorsque j'execute le meme code sur mon poste de travail ayant easyphp installé, le code marche (le fichier excel est crée sans probleme.
Répondre à angovant

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
zavenger, le mardi 6 mai 2008 à 11:01:32
Si c'est lors de la creation de ton COM excel, je ne vois que :
-excell n'est pas insatllé comme il faut
-une session de excell tourne deja (a voir dans process explorer) et il n'arrive pas a creer une nouvelle instance
Répondre à zavenger

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
angovant, le mardi 6 mai 2008 à 11:23:44
Je vais essayer de déinstaller et réinstaller excel sur le server. je te tiendrai au courant.

Merci pour tes idées pertinantes..
Répondre à angovant

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
angovant, le mardi 13 mai 2008 à 12:01:05
Mon problème vient d'être résolu, c'était un problème de droits d'accès sur le serveur de la société.

Par contre j'ai un méga souci de codage et je voudrais savoir si je peux t'enquiquiner un instant.

Je souhaiterais mettre le code ci-dessous en php pour automatiser l'extration et le remplissage de la feuille excel via un bouton.

<?php

define("FILENAME","C:\flap.xls");

/*
Cette fonction initialise le fichier excel */

function initExcelFile($data){

if(file_exists(FILENAME))
{
unlink(FILENAME);
}

$excel=new COM("Excel.application");//Instanciation de l'objet COM
$excel->sheetsinnewworkbook=1;//Une seule feuille dans le document
$excel->Workbooks->Add();//Ajout d'un classeur
$book=$excel->Workbooks(1);//$book contient le classeur actif
$sheet=$book->Worksheets(1);//$sheet contient la feuille active
$sheet->Name="FlapRequete";//Attribution d'un nom à la feuille


//Attention cette partie du code n'est pas totalement PHP,
//j'ai bricolé juste pour montrer la façon de faire la boucle
--------------------------------------------------------------------
while(data.next()){
int numero=0; //Si on peut recuperer les cellules par le numero au lieu de la lettre

$cell=$sheet->Range(numero);
$cell->value=data.titre; //Titre de mes colonnes
$cell->Font->ColorIndex=2; //couleur du texte
$cell->Interior->ColorIndex=7; //Couleur de fond de cellule
$cell->Font->bold = true; // On met en gras
$cell->Font->Italic= true; // On met en italique
$cell->Font->Size = 11; // Taille 15
$cell->Borders->LineStyle=9; // Encadré double
$cell->EntireColumn->ColumnWidth=15; // On met une largeur de colonne précise

numero=numero+1;
}
-------------------------------------------------------------------------

$book->saveas(FILENAME);//Enregistrement du document
unset($sheet);//Libération de $sheet
unset($book);//Libération de $book
$excel->Workbooks->Close();//Fermeture du classeur
$excel->Quit();//On quitte Excel
unset($excel);//Libération de l'objet $excel
}


/**
*Cette fonction remplit le fichier excel
*/
function fillExcelFile($data){

if(file_exists(FILENAME))
{
unlink(FILENAME);
}
$excel=new COM("Excel.application");//Instanciation de l'objet COM
$book=$excel->Workbooks(1);//$book contient le classeur actif
$sheet=$book->Worksheets(1);//$sheet contient la feuille active

//Attention cette partie du code n'est pas totalement PHP, j'ai bricolé juste pour montrer la façon de faire la boucle
--------------------------------------------------------------------
while(data.next()){
$cell=$sheet->Range(numero)->celluleSuivante; //Je recupere la celle suivante à chaque fois pour ecrire la donnée suivante
$cell->value=data.champCible; //Donnees dans la colonne
}
--------------------------------------------------------------------

$book->saveas(FILENAME);//Enregistrement du document
unset($sheet);//Libération de $sheet
unset($book);//Libération de $book
$excel->Workbooks->Close();//Fermeture du classeur
$excel->Quit();//On quitte Excel
unset($excel);//Libération de l'objet $excel
}
--------------------------------------------------------
Clique sur le bouton
-----------------------------------------------------------------------------------------
//Recuperation des données dans la base
$data=findData(parametres);
//Initialisation des entetes du fichier excel
initExcelFile($data);
//Remplissage du fichier Excel
fillExcelFile($data);
?>
Répondre à angovant

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
zavenger, le mardi 13 mai 2008 à 13:19:27
Je ne vois pas vraiment de probleme dans ce ce que tu proposes. Juste que pour acceder a une cellule il faut que tu utilise la propriete cells(row,col) de l'objet sheet.
Et donc que tu dois tester la value de ta cellule pour ta boucle
Répondre à zavenger

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 angovant, le mardi 13 mai 2008 à 13:34:20
Ca c'est le probleme des pas "doués" de la programmation.Je suis un vrai novice du php et du codage en général.Il m'arrive parfois de ne rien comprendre au code en face de moi.
Je vais essayer de me dépatouller.
Répondre à angovant
Logiciels pertinents trouvés dans les téléchargements
Télécharger Excel Viewer 2003Excel Viewer - Avec Microsoft Office Excel Viewer 2003, vous pouvez ouvrir, afficher et imprimer des classeurs Excel (fichiers XLS ), même...Catégorie: Tableur
Licence: Freeware/gratuit
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger PSPad 4.5.2PSPad - PSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS,...Catégorie: Développement
Licence: Freeware/gratuit
Télécharger Ms Word Excel Cracker 2.2Ms Word Excel Cracker - Ms Word Excel Craker est une application permettant de retrouver les mots de passe perdus ou oubliés pour les fichiers.xls...Catégorie: Suite bureautique
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Resultat requete dans excel avec PHP »