Impossible de faire fonctionner la Class COM sous Vista et O

Petit nouveau ! | 3 Messages

30 juil. 2009, 16:14

Bonjour à tous,

J'ai créé un programme en PHP qui fait appel à un fichier excel pour générer un fichier html formaté.
Pour ouvrir le fichier excel j'utilise la class COM :
$excel_app = new COM("Excel.application") or Die ("Did not connect");
$Workbook = $excel_app->Workbooks->Open("$filename") or Die("Did not open $filename $Workbook");
$Worksheet = $Workbook->Worksheets($sheet1);
$Worksheet->activate;
Ce programme fonctionnais très bien sous Windows XP avec Office 2003, depuis ma migration sous Vista entreprise et Office 2007, impossible d'ouvrir le fichier. J'ai le message suivant :
Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft Office Excel<br/><b>Description:</b> Impossible de lire la propriété Open de la classe Workbooks.'
Pour faire tourner ce programme j'utilise WampServeur 2.

A quoi cela est-il dû ? Vista, Office 2007 ou les deux. Existe-t-il une solution à mon problème ??

Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 juil. 2009, 16:46

Bonjour,

Vu le message d'erreur, le problème est lié à Excel.

J'ai trouvé cela sur internet qui j'espère résoudra ton problème:
It seems that Excel disabled the worksheet and
thus causing the error in the script. To find out if this is the case, open
Excel, goto to About Microsoft Office Excel and then click the Disabled Items
button.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

30 juil. 2009, 20:01

Merci pour ta réponse, je vais explorer ta piste et je communique le résultat.

Eléphant du PHP | 453 Messages

31 juil. 2009, 13:15

Hello,

Un fichier Excel absolument ? Pour les graphiques ? (:-k) As tu regardé le format *.csv (exportation *.xls -> *.csv) ? Ne connaissant pas très bien Office 2007, je sais que l'enregistrement par défaut d'un fichier Word par défaut est l'extension *.docx et il me semble qu'un fichier Excel natif d'Office 2007 est *.xlsx. J'avais lu quelque part, que ce sont des fichiers avec une arborescence *.xml.

Donc, ton erreur serait peut être de là.

@+

Au passage, je trouve que cette utilisation excessive du die ou du exit n'est peut être pas si bonne que cela. Si la class COM est bien faite, tu ne devrais pas avoir besoin d'un die ou d'un exit. ;)

Petit nouveau ! | 3 Messages

31 juil. 2009, 14:51

Bonjour,
Tu as raison Nolem, les fichiers par défaut sous Office 2007 sont *.xlsx pour excel *.docx pour Word
et ne sont ni plus ni moins des fichiers zippé contenant une architecture xml et autres. En renommant l'extension xlsx en zip, tu peux le décompacter avec winzip ou autres.
Plus mes recherches avance plus j'ai l'impression que l'on ne peut plus attaquer une classe COM sur Office 2007 comme sur 2003. Je vais regarder le format *.csv mais cela va m'obliger à revoir tout mes programmes :(

Merci pour ta remarque sur les DIE, je vais revoir.

@+

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Invité
Invité n'ayant pas de compte PHPfrance

03 sept. 2009, 17:03

Bonjour,
J'ai le même problème avec la même config sauf pour Office qui est en version 2003.
Avez vous trouver une solution autre que d'utiliser le fichier XML ?

Merci d'avance,

Yon