Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Bureautique
Bureautique Forum d'entraide sur la gestion dynamique de documents de bureautique (Word, Excel, OpenOffice...) avec PHP. Avant de poster -> Cours Excel, FAQ OpenXML, FAQ OpenDocument
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/10/2004, 09h57   #1
Invité de passage
 
Inscription : octobre 2004
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 7
Points : 1
Points : 1
Par défaut excel csv

Bonjour tout le monde. j'ai apprecié le tutorial pour utiliser les objet COM avec PHP et générer des fichier excel (surtout graphique) ca le fait vraiment. Cela dit j'ai une question.

Je dois récupérer des données formatées à partir de centaines de fichier excel. Chaque fichier contient 10 feuille toute identique en forme mais avec des données différentes biensur.

Lorsque je vais chercher les données avec COM tout marche bien sauf que pour les date il me donne le nombre TIME qui correspond au temps UNIX. hors j'ai des date qui sont avant le TEMPS UNIX donc il me met -1. et second problème parfois les date sont mal écrite du style 12102004 au lieu de 12/10/2004.

Enfin soit il y a possibilié de forcer la récupération dans un format texte soit il existe une possibilité d'exporter toute les feuilles d'un classeur en format CSV et dans ce cas plus de problème. MErci de me donner vos solutions si vous en avez

GEO
gledoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2004, 10h15   #2
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
hello,

j'ai rencontré ce genre de problème il y a longtemps, à l'époque j'avais opté pour une solution du genre :
1) j'ouvre un fichier excel (via PHP)
2) pour chaque feuille je fais "enregistrer sous..." => CSV
3) je passe au fichier suivant

euh... c'est tout


Enfin perso si j'ai opté pour le CSV, ce n'était pas à cause des dates mais surtout pour un gain de temps. Le traitement était beaucoup plus rapide en passant par l'étape conversion CSV.
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2004, 10h18   #3
Invité de passage
 
Inscription : octobre 2004
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 7
Points : 1
Points : 1
Par défaut ok cool

d'acccord mais alors commen ttu fais ton exporte csv STP
gledoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2004, 10h42   #4
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
pour ça, je te laisse te renseigner auprès de Google et des nombreux tutoriaux... perso je ne m'en souviens plus, et pas moyen de mettre la main sur le code en question...

M'enfin, ce doit etre un truc de ce genre :
Code :
$wkb->SaveAs($dest,xlNormal);
en prenant soin de selectionner la bonne feuille avant, et en remplaçant le xlNormal par la constante appropriée... (suffit de tester via une macro Excel pour avoir le nom de la bonne constante).

Pour connaitre les valeurs des constantes : http://techsupt.windowware.com/TS/T000001033005F9.html
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2004, 10h58   #5
Invité de passage
 
Inscription : octobre 2004
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 7
Points : 1
Points : 1
Par défaut touvé

voila j'ai trouvé merci pour tes conseil. je met le resultat pour ce que ca interesse.

$classeur->saveas($dest, 6);

6 c'est la valeur de la constante xlCSV apparament ca ne marche que avec la valeur de constante pas avec le nom

Voila salut
gledoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2004, 11h08   #6
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Par défaut Re: touvé

Citation:
Envoyé par gledoux
voila j'ai trouvé merci pour tes conseil. je met le resultat pour ce que ca interesse.

$classeur->saveas($dest, 6);
heureux de t'avoir aidé



Citation:
Envoyé par gledoux
6 c'est la valeur de la constante xlCSV apparament ca ne marche que avec la valeur de constante pas avec le nom

Voila salut
ça c'est normal. Pour cela il faudrait faire un define('xlCSV',6); en début de script.
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2004, 11h43   #7
Invité de passage
 
Inscription : octobre 2004
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 7
Points : 1
Points : 1
Par défaut re un probleme

en fait j'ai problème voila mon script :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
$excel = new COM("Excel.application");
for($i = 1; $i < 11; $i++){
// Nom du fichier à ouvrir : chemin absolu
	$classeur = $excel->Workbooks->Open(realpath("./extract/".$rep."/".$file)); 
	//selection de la feuille
	$feuille = $classeur->Worksheets($i);
	$cellule = $feuille->Range("C4");
	$csvname = str_replace(" ","_",$cellule->value);
		if($cellule->value != "")
			$classeur->saveas(realpath("./extract/".$rep."/".$csvname."_".$i.".csv"), 6);
 
	$classeur->close(); 
	// je ferme excel 
	$excel->Workbooks->close(); 
	}
	/*$classeur->close(); 
	// je ferme excel 
	$excel->Workbooks->close();*/ 
	$excel->Quit();
le proeblème c'estq quel que soit les données des feuilles il me met toujours dans tout mes fichiers csv les données de la dernière feuille. Ils sont donc tous identique.
et autre chose. peut on éviter de demander systèmatiquement à l'utilisateur si il veut enregistrer car il y une alerte excel qui me le dmeande

merci
gledoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2004, 10h19   #8
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
arf... faut chercher un peu

Lors de l'enregistrement au format CSV, Excel ne va conserver que la feuille ACTIVE. Il te suffit donc de selectionner cette feuille avant d'enregistrer.
Par exemple : $feuille->select();

Pour le warning, oui il existe au moins deux solutions : la premiere est de faire un "$classeur->saved=true;" (il me semble hein, le mieux serait de demander à Google), et la deuxième est de désactiver les messages d'alerte justement (là non plus, je ne me souviens plus).
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2004, 10h30   #9
Invité de passage
 
Inscription : octobre 2004
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 7
Points : 1
Points : 1
Par défaut trop bien

trop bein ca marche... tu es mon héros.

voila le code pour ce que ca interesse :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
$excel = new COM("Excel.application");
	// Nom du fichier à ouvrir : chemin absolu
	$classeur = $excel->Workbooks->Open(realpath("./extract/".$rep."/".$file)); 
	for($i = 1; $i < 11; $i++){
		//selection de la feuille
		$feuille = $classeur->Worksheets($i);
		$feuille->select();
		$cellule = $feuille->Range("C4");
		if($i == 1)
			$csvname = str_replace(" ","_",$cellule->value);
		if($cellule->value != ""){
			$classeur->saveas(realpath("./extract/".$rep."/".$csvname."_".$i.".csv"), 6);
			$classeur->saved=true;
			}
	}	
	$classeur->close(); 
	// je ferme excel 
	$excel->Workbooks->close(); 
	$excel->Quit();
gledoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2004, 10h32   #10
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2004, 12h14   #11
Invité de passage
 
Inscription : octobre 2004
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 7
Points : 1
Points : 1
Par défaut une dernière question

commetn savoir si une feuille existe
ou alors combien il y a de feuille dans un classeur
gledoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2004, 14h16   #12
Invité de passage
 
Inscription : octobre 2004
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 7
Points : 1
Points : 1
Par défaut c bon

j'ai réglé le preoblème défférament merci
gledoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2005, 11h51   #13
Invité de passage
 
Inscription : août 2005
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 3
Points : 3
Points : 3
Ce sujet n'est pas tout jeune, mais je me permet de le remonter car il répond en parti à un probleme que je rencontre.
Voilà, je dois également créer des fichiers csv à partir d'un classeur Excel comportant plusieurs feuilles toutes ayant la meme forme mais pas le meme contenu tout comme gledoux.

Cependant, seules les données de quelques cellules m'interessent et doivent etre exportées en .csv

Je voulais savoir si vous aviez une solution pour cela, car je ne veux pas l'export de toutes les données de chaque feuille mais uniquement par exemple les cellules C2,D4,H8 de chaque feuille.
Je ne sais pas comment faire avec cette solution php qui me semble etre la seule permettant l'export automatique en csv de tout un classeur excel.

Merci d'avance pour toute aide.
Ryujin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2005, 13h39   #14
Rédactrice
 
Avatar de xave
 
Inscription : mai 2002
Messages : 860
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mai 2002
Messages : 860
Points : 824
Points : 824
Ben tu sélectionnes les cellules de ta feuille, par exemple:

Code :
$cell=$sheet->range("A1");
J'espère que ça t'aide un peu, sinon, il y a un bon tuto là:

http://stephaneey.developpez.com/tutoriel/php/phpexcel/
xave est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2005, 14h15   #15
Invité de passage
 
Inscription : août 2005
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 3
Points : 3
Points : 3
Oui selectionner ce n'est pas ce qu'il y a de plus dur
Mais c'est surtout n'enregistrer en csv que le contenu de ces cellules qui est plus compliqué
Ryujin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2005, 14h24   #16
Rédactrice
 
Avatar de xave
 
Inscription : mai 2002
Messages : 860
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mai 2002
Messages : 860
Points : 824
Points : 824
Pour récupérer la valeur de la cellule, tu fais:

J'espère que ça t'aide... mais n'hésite pas à aller reluquer le lien que je t'ai mis...
xave est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2005, 14h45   #17
Invité de passage
 
Inscription : août 2005
Messages : 3
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 3
Points : 3
Points : 3
Vi j'ai regardé, ca m'a donné une idée, je pense que je vais parcourir mon fichier excel et stocker dans un tableau toutes les valeurs des cellules qui m'interessent, pour ensuite les réinséré dans un nouveau fichier excel et exporter en csv je verrais bien le resultat.

Merci.
Ryujin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h18.


 
 
 
 
Partenaires

Hébergement Web