Rechercher : dans
Par :

Upload et modification fichier excel via PHP

Dernière réponse le 13 oct 2009 à 18:46:52 billypote, le 22 oct 2008 à 10:46:12 
 Signaler ce message aux modérateurs

Bonjour tout le monde,

Je suis un peu en galère la.
L'idée c'est que j'ai un fichier excel avec une colonne A et une colonne B, je voudrais pouvoir uploader ce fichier, et le modifier de facon a obtenir une troisieme colonne A+B, puis l'enregistrer la ou je veux.
La partie upload ne pose pas de problemes, c'est jsute que je n'ai pas la moindre idée de comment modifier le fichier Excel avec PHP.

Merci pour votre aide.

Configuration: Windows XP
Firefox 1.0.3

Meilleures réponses pour « Upload et modification fichier excel via PHP » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...

1

billypote, le 22 oct 2008 à 12:12:45

Up, c'est assez important :/

Répondre à billypote

2

2berte, le 22 oct 2008 à 12:16:21

C'est obligatoirement un fichier Excel (.xls) ? Cela ne peut pas être un fichier de type csv ?

Lire un fichier CSV, je sais faire. Ecrire un nouveau fichier ça doit être possible.

Quel est l'intéret de cette manip ? Peux tu nous expliquer davantages stp .

En attente de te lire en retour,

2berte

Répondre à 2berte

3

billypote, le 22 oct 2008 à 12:23:20

Salut,

Oui c'est obligatoirement un fichier .xls .

En fait la ou je bosse on a une application qui sort sous forme d'un tableau excel tout un tas de données.
On m'a demandé de faire une application qui permette d'uploader ce fameux tableau excel, et d'ajouter deux colonnes au tableau, ces deux colonnes regroupent des informations des autres colonnes (concatenation en gros). Ensuite l'utilisateur récupère le nouveau fichier excel avec les deux colonnes en plus.

Répondre à billypote

4

2berte, le 22 oct 2008 à 12:26:21

Et pourquoi tu fais ça en PHP ?

Répondre à 2berte

5

billypote, le 22 oct 2008 à 12:28:38

Parceque je ne connais que le php pour le moment :/
Tu vois une solution simple ? je veux dire autre que php ?

Répondre à billypote

6

2berte, le 22 oct 2008 à 12:30:22

Bah si tu connais que PHP, non je ne vois pas d'autres solutions...

Un petit lien qui permet d'ouvrir ton fichier ".xls" et d'écrire dans une case : http://www.infos-du-net.com/forum/264042-21-creer-fichier-excel .

C'est peut être un bout de piste.

En attente de te lire en retour,

2berte

Répondre à 2berte

7

billypote, le 22 oct 2008 à 12:46:24

Merci pour le lien.

A partir de ce lien, j'ai tenté de simplement ouvrir le fichier Excel uploadé, voila mon code:

$file = ($_FILES['fichier']['name'] ) ; // le fichier doit dj exister
	fopen($file, "w" ) or die ("marche pas"); //on ouvre le fichier



Evidemment ca ne fonctionne pas, il ne se passe rien, sinon ça ne serait pas drôle ;)
Donc si qqn voit ou ca foire...


Merci d'avance

Répondre à billypote

8

billypote, le 22 oct 2008 à 12:59:51

Rectification, ca écrase le fichier existant, c'est donc un bon début, au moins il se passe quelque chose sur mon fichier Excel :D

Répondre à billypote

9

2berte, le 22 oct 2008 à 14:05:14

Le 'w' signifie que tu ouvres ton fichier en écriture, or toi tu dois l'ouvrir en lecture et écriture ... Cherche sur cette piste là ...

Bon courage

2berte

Répondre à 2berte

10

billypote, le 22 oct 2008 à 14:55:56

Effectivement, j'ai mis "r+" au lieu de "w", ca n'ecrase plus le fichier.
J'ai chopé une libraire qui apparement permettrait décrire et de lire un fichier Excel, je vais tenter de comprendre comment cela fonctionne !

Répondre à billypote

11

2berte, le 22 oct 2008 à 16:55:31

Alors ça donne quoi ?

Répondre à 2berte

12

billypote, le 22 oct 2008 à 17:27:53

C'est un peu le bordel :p
Je vais me faire taper sur les doigts par le patron lol.
Juste pour info, si je fais

fopen ("fichier.txt",r
) , c'est censé ouvrir le fichier non ? Je veux dire, ca ouvre le bloc note pour qu'on puisse lire non ?

Répondre à billypote

13

2berte, le 22 oct 2008 à 18:07:46

Donne ton code entier si tu veux un coup de main...

non ça t'ouvre le fichier en lecture. Mais il ne s'ouvre pas physiquement, c'est pour cela que tu vois pas le bloc notes s'ouvrir...

2berte

Répondre à 2berte

14

2berte, le 22 oct 2008 à 18:07:54

Donne ton code entier si tu veux un coup de main...

non ça t'ouvre le fichier en lecture. Mais il ne s'ouvre pas physiquement, c'est pour cela que tu vois pas le bloc notes s'ouvrir...

2berte

Répondre à 2berte

15

billypote, le 23 oct 2008 à 09:48:48

J'ai pas de code à te donner, j'ai fait tellement d'essais que c'est un bordel monstre au niveau du code, ca serait illisible. xD

Si fopen() n'ouvre pas physiquement, quelle est la commande pour ouvrir physiquement un fichier ?

Répondre à billypote

16

2berte, le 23 oct 2008 à 13:54:05

Fopen() permet d'ouvrir ton fichier, mais cela n'ouvre pas Excel. toi tu dois utiliser cette commande.

Pourquoi ne pas faire cela directement dans Excel ? Excele permet de faire cela, sinon je n'ai pas compris l'intéret de Excel ...

En attente de te lire en retour,

2berte

Répondre à 2berte

17

billypote, le 23 oct 2008 à 14:22:27

J'aimerai te dire que y'a un intérêt, mais je n'en vois pas :d

Pourquoi ne pas faire en sorte que l'application qui génère le premier fichier Excel ne le génère directement avec les deux colonnes en plus ?
Pourquoi les utilisateurs ne peuvent pas pas ajouter eux-mêmes directement les deux colonnes en un tour de macro ?

Au lieu de ça je dois galérer avec PHP pour modifier un fichier Excel, alors que c'est pas du tout fait pour, mais bon, c'est le patron qui l'a demandé xD

Pour l'instant j'arrive à créer un fichier Excel avec PHP, et écrire des trucs dedans, mais impossible de modifier un fichier existant. VOila le code qui fonctionne et qui me permet de créer un fichier excel en php:

// On définie une constante FILENAME comprenant le nom du fichier à générer et son emplacement.
define("FILENAME","C:/mon_repertoire/fichier.xls");

$excel=new COM("Excel.application"); //Instanciation de l'objet COM
$excel->sheetsinnewworkbook=1;//1 seule feuille de calcul dans le document
$excel->Workbooks->Add();//Ajout d'un classeur
$book=$excel->Workbooks(1);//$book contient le classeur actif
$sheet=$book->Worksheets(1);//$sheet contient la feuille active (comme son nom l'indique, feuille en anglais)
$sheet->Name="Nom de votre feuille";//Attribution d'un nom à la feuille

$cell=$sheet->Range('B1'); // On sélectionne la case B1
$cell->value="tut"; 

$book->saveas(FILENAME);//Sauvegarde du fichier
unset($sheet);//Libération de $sheet
unset($book);//Libération de $book
$excel->Workbooks->Close();//Fermeture du classeur
$excel->Quit();//On quitte Excel
unset($excel);//Libération de l'instance $excel




J'ai chopé ça la http://www.siteduzero.com/tutoriel-3-30907-generer-un-fichier-excel-via-php.html

Ce bout de code créé un fichier et écrit "tut" dans la case B1.
Apparement c'est du VBA remixé façon php, donc je vais tester
$excel=Workbooks->Open FILENAME;
pour tenter d'ouvrir un fichier deja existant.

Répondre à billypote

18

billypote, le 4 nov 2008 à 09:48:03

Me revoila, pour vous tenir un peu au courant de mon avancement, et donner des pistes à certains .
J'ai chopé la librairie excelWriter, qui permet de créer un fichier Excel avec PHP. J'ai réussi à le modifier de facon à ce que je puisse ouvrir un fichier déja existant. Voila le code:

<?php

set_time_limit(10);

require_once "excelWriter/class.writeexcel_workbook.inc.php";
require_once "excelWriter/class.writeexcel_worksheet.inc.php";

$var= 'tut.xls';

	
	$workbook =& new writeexcel_workbook(fopen($var,"r+")) or die ("Error");
	$worksheet =& $workbook->addworksheet("Tut 1") or die ("Error 2");
	
	//$book=$excel->Workbooks(1) ;
	//$sheet=$book->Worksheets(1) ;
	# The general syntax is write($row, $column, $token). Note that row and
	# column are zero indexed
	#
	
	# Write some text
	$worksheet->write(2, 0,  "Meuhhh !");
	$worksheet->write(2 ,1,  "Pouet");
	$worksheet->write(2, 2,  "Plop");

	$workbook->close();

	header("Content-Type: application/x-msexcel; name=\"example-simple.xls\"");
	header("Content-Disposition: inline; filename=\"example-simple.xls\"");
	$fh=fopen($fname, "rb");
	fpassthru($fh);
	unlink($fname);
	
	

?>


Ca ouvre le fichier tut.xls, et y écrit 3 mots dans 3 cases différentes. Le problème c'est qu'avec ce code, on ouvre un fichier existant, mais on crée une nouvelle feuille (addworksheet), qui écrase les feuilles existantes. En clair j en'arrive pas encore a ajouter des donées sans effacer les anciennes.


Donc si qqn sait comment écrire dans une feuille déja existante sans en créer une, ça m'interesse grandement !

Répondre à billypote

21

JHT, le 18 jan 2009 à 13:14:49

Tu as trouvez la solution car moi je ne la trouve pas
Merci d'avance

A+

Répondre à JHT

19

billypote, le 4 nov 2008 à 16:57:25

Up ! :)

Répondre à billypote