[PHP] Ecriture dans un fichier xls

Fermé
Nicolas - 21 juin 2007 à 08:38
znathan Messages postés 10 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 janvier 2009 - 12 janv. 2009 à 16:48
Bonjour

Dans le cadre de mon stage, je devais créer un petit module (qui fonctionne parfaitement, pas de soucis de ce côté là).
Cependant, ayant fini plus tôt que prévu, il m'a été demandé de rajouter une option, à savoir l'export d'une table vers un fichier excel. Et là, je bloque un peu.

Explications : je récupère sans problèmes les données de ma table (pas bien compliqué remarque) et je sélectionne les données utiles (en fait, les champs que l'utilisateur désire récupérer). Je laisse également le choix à l'utilisateur du fichier excel devant réceptionner les données via un explorateur.
Mais le problème est là : je n'arrive pas à exporter où je veux ......

Les tables (ainsi que mes fichiers php) se trouvent sur un serveur auquel l'utilisateur n'a pas accès. Et le problème est là : si le fichier excel choisi par l'utilisateur ne se trouve pas sur le serveur (par exemple, en local sur sa machine) l'export ne fonctionne pas.
En revanche, si le fichier se trouve sur le serveur, l'export fonctionne, mais comme l'utilisateur a pas accès à la racine du serveur, ça ne lui sert pas à grand chose ^^

Mon code :

$fichier = $_POST['explorer']; // Récupération du fichier désiré par l'utilisateur
$fichier = stripslashes($fichier); // Comme il y a un antislah de trop dans le chemin, j'en enlève un. Exemple : passage de C:\\Documents and Settings\\test.xls à C:\Documents ans Settings\test.xls
$handle = fopen($fichier, 'w+'); // Ouverture du fichier
/* Récupération des données dans une variable nommée $export, pas bien intéressant ici */
fwrite($handle, $export, 1000); // Ecriture dans le fichier, 1000 caractères pour être sûr de tout mettre
fclose($handle); // Fermeture du fichier



Ma variable $export ressemble à ceci : champ1 \t champ2 \t champ3 \t champ4 \n champ5 \t champ6 \t ......



Need help please :D
Merci d'avance à ceux qui pourront m'aider
A voir également:

4 réponses

s.spark Messages postés 2485 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 618
21 juin 2007 à 15:21
Perso je trouve ta méthode inapproprié, de plus en utilisant parcourir tu importe, c'est pas une exportation, la fonction fopen et compagnie fonctionnent pour des fichiers du serveur, avec des chemin relatif à celui-ci (http:\\etc ...) et pas C:\etc. ... . Enfin c'est brouillé ton truc.
1
s.spark Messages postés 2485 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 618
21 juin 2007 à 14:04
Salut,

D'après ce que j'ai compris tu dois exporter des donnée d'une table vers un fichier, alors je ne comprend pas ce que tu veux dire par là :

"Comme il y a un antislah de trop dans le chemin, j'en enlève un. Exemple : passage de C:\\Documents and Settings\\test.xls à C:\Documents ans Settings\test.xls"

Pourquoi tu parle de chemin ? L'idée n'est pas de modifier un fichier existant d'après ce que je comprend. je serais j'utiliserais la fonction header() pour le faire télécharger.
0
Hello !

Je parle de chemin, parce qu'il faut bien que php sache dans quel fichier il doit insérer les données.
Que l'utilisateur utilise un fichier déjà existant ou en crée un nouveau (dans notre cas, ce serait plus vraisemblablement la seconde solution quand même), pour moi ça ne change rien : j'insère les données dedans quitte à écraser ce qu'il y avait avant.

Un exemple plus concret peut-être : dans mes tests, je clique sur le bouton parcourir que j'ai préalablement inséré et je choisis d'utiliser un fichier test.xls se trouvant dans un dossier, le chemin étant celui-ci :
C:\Documents and Settings\MonNom Nicolas\Bureau\Nicolas\test.xls

Je récupère ceci par l'instruction $fichier = $_POST['explorer'];

Or, dans $fichier, il se trouve ceci : C:\\Documents and Settings\\MonNom Nicolas\\Bureau\\Nicolas\\test.xls

J'utilise donc la fonction stripslashes pour enlever cet antislash de trop et retrouver le chemin initial.
Et ensuite, ben classique, fopen, fputs (ou fwrite) et fclose.
C'est bien la bonne méthode non ? Pourtant, si je sélectionne un fichier se trouvant dans un autre dossier, l'export ne se fait pas. Mais si je reste dans le dossier initial, alors l'export fonctionne.


Pour la fonction header : en effet je n'y avais pas pensé, mais j'utilise le système de templates Smarty. Donc mon fichier php se charge uniquement des traitements, et je n'ai pas de header dedans.
0
znathan Messages postés 10 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 janvier 2009
12 janv. 2009 à 16:48
bonsoir tout le monde.J'ai un sérieux problème avec un projet en conception de système d'exploitation.voila:on nous demande de simuler l'algorithme du banquier en PHP et là franchement je ne sais pas par ou commencer.Je tente de raisonner le projet comme si on me l'avait demander en langage C et en C j'allais demander à l'utilisateur de choisir la taille de ses vecteur et de ses matrices ensuite il allait remplir et ses vecteurs et ses matrices et moi je récupérait tout cela pour tester avec l'algorithme et lui retourner si il y a inter blocage ou pas.Mais voila mon problème:en plus de ne pas savoir comment déclarer des vecteurs et des matrices, je ne sais pas comment effacer mon écran à chaque fois que je voudrais passer de la page des saisie de la taille des vecteurs et matrices à la page de remplissage. Vivement que quelqu'un m'aide sinon je suis dead.
-1