[PHP] Open Excel File with COM

Salut tous le monde,

Je souhaite ouvrir un fichier Excel (contenant du vba à l'ouverture) par un lien sur mon serveur PhP afin qu'il soit disponible sur mon serveur.

J'ai donc réalisé ce code, me permettant normalement d'ouvrir le fichier souhaité et de le refermer :

$FILENAME = "....\test.xlsx";
$XLSHandle=new COM("excel.application") or die("ERROR: Unable to instantaniate COM!\r\n");
print "Loaded excel, version {$XLSHandle->Version}\n";
echo "Vérification de l'existence du fichier :<br />";
if (file_exists($FILENAME)) {
echo "Le fichier $FILENAME existe.<br />";
} else {
echo "Le fichier $FILENAME n'existe pas.<br />";
}
try {
$WrkBksHandle = $XLSHandle->Workbooks->Open($FILENAME);
} catch(Exception $e) {
echo $e->getMessage();
}
//if already existing file is opened
if($WrkBksHandle != null)
{
unset($WrkBksHandle);
$XLSHandle->Workbooks->Close();
}
//Quit Excel Application
$XLSHandle->Quit();
unset($XLSHandle);

Mon code fonctionne lors d'un lancement en CLI :

"php.exe test.php"

Mais ne fonctionne pas lorsqu'il se trouve sur mon serveur.

"Microsoft Excel ne peut accéder au fichier .... "

J'ai donc cherché le profil avec lequel était exécuté le script.

echo system('whoami');

Et sur mon serveur je suis en

autorite nt\système autorite nt\système

J'ai donc essayé de modifié dans le Services de composants, DCOM l'identité par défaut de l'utilisateur. Malheureusement je ne trouve pas le composant COM associé à Excel dans la liste des composants.

Avez-vous une idée sur comment modifier cette propriété (je pense que le problème vient de là) ?

Merci d'avance de votre aide.

Bonjour Tenders_VBA

Je ne développe pas PHP, mais le problème me semble logique

Autant Office est installé sur votre poste (client) qu'il ne l'est forcément pas sur votre serveur

A+

Bonjour,

Merci de ta réponse !

J'avais bien Excel d'installé sur mon serveur, le problème était à cause du chemin relatif du fichier il le trouvait avec le file_exists mais pas avec le ->Workbooks->Open($FILENAME).

Je crois qu'il se plaçait à partir de php.exe et non pas de mon fichier .php que je pensais. Je n'avais juste pas pensé qu'il ne se plaçait pas dans le même contexte pour les 2 fonctions.

J'ai donc mis un chemin absolue et cela à régler mon problème d'ouverture.

Rechercher des sujets similaires à "php open file com"