Comment récupérer les données d'un txt ou xls

Fermé
Nagasashi - 11 août 2010 à 14:18
 Bobleponge - 11 août 2010 à 15:51
Bonjour,
Après quelques rechercher pour le moins infructueuse, je me tourne vers vôtre savoir ;).
Voici mon soucis:
A l'origine, j'ai un fichier excel (.xls), et je droit remplir une table d'une base de donnée contenant plusieurs champs.

J'aimerais donc, si possible, récupérer ligne par ligne, cellule par cellule les information de mon fichier, puis, à chaque changement de ligne, lancer ma requête SQL (INSERT INTO) avec les informations précédemment récupérées.

Puis, ne trouvant pas la solution pour les fichier xls, j'ai exporter le .xls en .txt en y mettant des ";" pour chaque changement de cellule, croyant que ça allé m'aidé... Mais, j'ai pas trouvé plus.

Si quelqu'un a une solution à me proposé, soit avec le .xls directement, soit avec le .txt, je suis preneur, quelque soit le langage ( après toute est question interprétation, et ça, je m'en occuperais ^^)

Merci d'avance.


4 réponses

En C# ca se fait très facilement via le txt..

En tete :
using System.IO;  

Code :
StreamReader reader = new StreamReader("monFic.txt");  
string[] cells;  
string line = reader.ReadLine();  
while (!reader.EndOfStream)  
{  
     cells = line.Split(';');  
     // Ici tu fais ta requete SQL "dynamique", je ne la mets pas puisque  
     //  tout depends sur quelle type de base tu te connectes etc..  
     // Il existe des classes toutes faites pour te connecter aux db,  
     // te reste plus qu'a fouiner un peu sur le Web  
     // Et utiliser l'objet ici en executant ta requete du type :   
monObj.Exec("INSERT INTO ... (id, name) VALUES (" + cells[0] + ", '" + cells[1] + "')");  
     line = reader.ReadLine();  
}  


Edit : N'empeche que ca reste super vague en disant "n'importe quel langage" !
1
W95Psp Messages postés 96 Date d'inscription mercredi 11 août 2010 Statut Membre Dernière intervention 22 décembre 2013 36
11 août 2010 à 15:14
Bonjour,
Tu peut le convertir en csv, et si tu programme en PHP (Tu ne dit pas en quoi tu programme), il y a une commande faite exprès pour traiter les csv :
http://www.journaldunet.com/...

A+
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
11 août 2010 à 15:33
De meme en php tu as la fonction explode():


<?php
	private $contenu_de_ton_fichier_txt;
	
	$tabDonnees = explode(';',$this->contenu_de_ton_fichier_txt);
	$nbDonnees = count($tabDonnees);
?>


puis tu parcours ton tableau dans une boucle.

encore mieux pour toi:
faire un double tableau[ligne][element]

Donc imaginons que le caractere de separation de ligne soit '\n', on aurais:

<?php
	private $contenu_de_ton_fichier_txt;
	
	$tabLigne = explode('\n',$this->contenu_de_ton_fichier_txt);
	$nbLigne = count($tabLigne);
	for ($i = 0; $i < $nbLigne; $i++)
	{
		$tabDonnees[$i] = explode(';',$tabLigne[$i]);
		$nbDonnees = count($tabDonnees);
		for ($j = 0; $j < $nbLigne; $j++)
		{
			echo $tabDonnees[$i][$j]; //la case sur la ligne i colonne j de ton fichier xls
		}
	}
?>
0
Je me permets juste de corriger ton dernier commentaire :
echo $tabDonnees[$i][$j]; //la case sur la ligne i + 1 colonne j + 1de ton fichier xls


Puisque sur Excel les indices commencent a 1 et A ;)
0
varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
11 août 2010 à 15:45
effectivement ^^
petit code fait a l'avavite, donc pas vraiment fait attention. M%ais si l'erreur est dans le commentaire c'est pas trop grave ^^
0
lol tout a fait, c'était plus pour ceux qui seraient susceptibles, dans un futur aussi loin soit-il, de copier/coller le code sans le comprendre et de se demander pourquoi ils obtiennent la cellule suivante.. (on n'sait jamais sur qui on peut tomber :p)
0
Merci à tous ^^
Problème résolut =D
0