Problème ouverture Excel à partir de PHP en utilisant un objet COM

Signaler
Messages postés
153
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
23 décembre 2010
-
Messages postés
11
Date d'inscription
jeudi 3 septembre 2009
Statut
Membre
Dernière intervention
29 octobre 2009
-
Bonjour,

Je rencontre un problème :
j'utilise l'objet COM pour créer un fichier Excel à partir de PHP avec PHP 4.4.8 / Windows Server 2008 et avec Office XP

un bout de code :

$TMPTEMPLATE_PATH=$DOCUMENT_ROOT.$_SESSION["repertoire_appli"]."/";

//*****Nom du fichier a xlt
$workbook =  $TMPTEMPLATE_PATH."fiche.xlt";
$app=new COM("Excel.Application") or die ("Impossible d'ouvrir Excel");
$empty=new Variant;

$app->Visible = 0;
$app->DisplayAlerts = 0;
$app->Interactive = 0;
$app->ScreenUpdating = 0;
$app->ReferenceStyle = -4150;
//$app->Calculation = -4135;

//ID du DE (à récupérer)
/******************/$de=$id_de;

//*****Creation du classeur

$wkb = $app->Workbooks->Add($workbook) or die ("ERREUR EXCEL wkb");


Le problème est qu'il me renvoie "ERREUR EXCEL wkb" donc il arrive bien à ouvrir Excel, puisqu'il passe la partie concernée, mais il n'arrive pas à ajouter le fichier template.

Or :

1) le fichier XLT existe bien à cet emplacement
2) le même code fonctionne sous PHP 4.4.8 / Windows XP / Office XP

Y a-t-il quelque chose à activer sous Windows Server 2008 ?
Ou un problème de chemin mais lequel ?

Je précise que j'ai sensiblement le même problème avec un COM Word au niveau :
$word->Documents->Add($TEMPLATE_PATH.$nom_tmp.".dot",0,0,1) or die("Impossible d'ouvrir le fichier modèle.");

où là il ne me trouve pas mon fichier template, qui existe pourtant bien, l'exemple fonctionnant sous mon autre plateforme(PHP4.4.8 / Windows XP / Office XP)

Merci d'avance pour votre aide
kiki

6 réponses

Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

Le chemin est en relatif ? Parceque com va pas utiliser le chemin relatif à ton script.

Sinon tu peux nous dire si ça passe le Add sans paramètres. Si tel est le cas, c'est soit ton chemin, soit ton fichier qui ne sont pas bons.


aKheNAtHoN
Messages postés
153
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
23 décembre 2010

salut,
merci de te pencher sur mon problème.

le chemin est en absolu, je vais avoir un truc du style : F:/wamp/www/....
sachant que j'ai essayé également en mettant \\ à la place des /

Avec le Add sans paramètres, cela fonctionne nickel.

Mon interrogation vient surtout du fait que dans une configuration quasi identique, seul l'OS change, cela fonctionne normalement.

Le problème n'est pas le fichier, vu qu'il a bien été créé en Office XP, qu'il est lu en Office XP, mais que sous Server 2008 il coince, alors sous Windows XP, ça roule (quoique ça roule moyen avec Office 2007, mais ça c'est un autre problème).

Donc oui je suis d'accord avec toi, le problème est qu'il ne trouve pas mon XLT, et donc "Pourquoi ?"

Merci de ton aide.

kiki
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

Si le chemin est bon, dans ce cas c'est les droits d'accès qui ne le sont pas. Donnes les droits en écriture / lecture à tout le monde.

Sous XP la gestion de la sécurité n'est pas la même que sous Server 2008, tout dépend de comment est executé Apache et quel est son niveau de droits, il le propage à PHP qui le propage à ton objet COM (ce n'est pas le cas sous XP qui utilise le compte utilisateur courant comme niveau de sécurité)

Bonne continuation,
aKheNAtHoN
Messages postés
153
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
23 décembre 2010

comment donner les droits en lecture / écriture à tout le monde ?

je ne vois pas trop où cela se situe sur Windows Server 2008...

une idée ?

Merci
Kiki
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

Tu cliques droit sur le fichier fiche.xlt puis sur propriétés, puis dans l'onglet sécurité tu ajoutes l'utilisateur Tout le monde, puis tu lui donnes les droits en lecture / écriture sur le fichier.

aKheNAtHoN
Messages postés
11
Date d'inscription
jeudi 3 septembre 2009
Statut
Membre
Dernière intervention
29 octobre 2009

essaye la fonction Open(realpath());

Ca devrait deja etre mieux.

Perso je l'utilise et je n'ai plus besoin de faire des str_replace('\\','\\',$sCheminVersMonFichier);