Problème ouverture Excel à partir de PHP en utilisant un objet COM
kiki2sirom
Messages postés153Date d'inscriptionmardi 17 août 2004StatutMembreDernière intervention23 décembre 2010
-
25 août 2009 à 16:12
devcphp12
Messages postés11Date d'inscriptionjeudi 3 septembre 2009StatutMembreDernière intervention29 octobre 2009
-
29 oct. 2009 à 18:55
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
A voir également:
Problème ouverture Excel à partir de PHP en utilisant un objet COM
kiki2sirom
Messages postés153Date d'inscriptionmardi 17 août 2004StatutMembreDernière intervention23 décembre 2010 26 août 2009 à 10:27
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 ?"
cs_aKheNathOn
Messages postés575Date d'inscriptiondimanche 23 décembre 2001StatutMembreDernière intervention23 octobre 2012 26 août 2009 à 11:49
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é)
cs_aKheNathOn
Messages postés575Date d'inscriptiondimanche 23 décembre 2001StatutMembreDernière intervention23 octobre 2012 26 août 2009 à 17:10
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.