Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
827 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Moyen le plus simple pour lire des fichiers CSV --> Tableau

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Moyen le plus simple pour lire des fichiers CSV --> Tableau

n°2311563
jujuf1
Buggé n'est pas joué
Posté le 24-02-2018 à 13:12:55  profilanswer
 

Salut !
 
Je pense que tout est dit dans le titre ...Quel est le moyen le plus simple pour lire des fichiers CSV --> Tableau
 
Merci par avance.

mood
Publicité
Posté le 24-02-2018 à 13:12:55  profilanswer
 

n°2315111
philippe47​4
Posté le 09-05-2018 à 12:14:44  profilanswer
 

Bonjour, le plus simple que je connaisse, comme c'est un tableau, l'ouvrir avec microsoft Excel.
 
Qui lui permet d'ouvrir les fichiers CSV.
Bien sûr, comme c'est du texte, pour respecter les données.
il faudra indiquer pour chaque collone à l'ouverture, indiquer que la collone c'est du format Texte.
 
Comme cela identiquement, j'ouvre des fichiers TXT contenant des chiffres hexadécimal.
 
Attention, si tu utilise l'ancienne version de Excel (2003), celle ci est limiter à uniquement 256 collones par ligne.
Donc tu ne pourra pas afficher plus que un tableau maximum de 256 collones.
 
si tu dispose de la version Sun office, il faut que tu regarde par toi même si il ouvre les fichiers CSV, identiquement que Excel.
 
 
mais si toi, tu souhaite lire un fichier CSV à travers le C++, j'ai uniquement trouvé en language VB net.
http://www.planet-source-code.com/ [...] &lngWId=10
 
donc tu n'a qu'a l'utiliser en tant que base, et le regonfler d'après ta propre vision.


Message édité par philippe474 le 09-05-2018 à 12:24:18
n°2315117
gilou
Modérateur
Modzilla
Posté le 09-05-2018 à 14:36:34  profilanswer
 

Non. Tableau ne veut pas dire tableau Excel que je sache.
Si c'est un CSV, l'algo est tellement simple qu'il vaut pas la peine de s'étendre dessus:
 
1) ouvrir le fichier en lecture
2) tant qu'il y a des lignes, faire
    - lire une ligne
    - exploser la ligne en champs suivant le délimiteur
    - tant qu'il y a des champs a remplir dans la structure tableau cible faire
      - remplir le champ avec celui de la source (ou une valeur par défaut (0, ''...) si on a épuisé la source), éventuellement après conversion texte -> nombre.
3) fermer le fichier
 
Bref une boucle de lecture contenant une boucle de tokenisation et basta.
 
A+,


Message édité par gilou le 09-05-2018 à 14:37:37

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2315203
philippe47​4
Posté le 12-05-2018 à 09:22:42  profilanswer
 

Bonjour Gilou.
 
Excel ou son hommologue de Sun sont des tableurs ont est bien d'accord.
Ainsi il dispose déjà des cases.
Et ce que tu explique avec le délimiteur, ont le fait exactement identiquement, lorsque ont ouvre un fichier texte (.txt ou .CSV) ou la personne, lui suffira juste de sélectionné chaque délimitation a ses données, que il souhaitera avoir une séparation représenté en texte soit par un espace ou une virgule ou point virgule.
 
et un tableau peut, si le format du fichier est pris en compte par le tableur, être ouvert par le tableur.
 
Ici sa question, il aurais du plutôt mieux la décrire, si c'est en programmation, ou si il souhaitait pouvoir ouvrir et lire les données à travers un logiciel existant déjà.
 
Pour l'explication que tu as donné, ici je ne souhaite même pas rentrer dans la discussion.
Comme je te l'ai expliquer, c'est la question posé par la personne, qui est sujet à toutes les réponses, en raison, que il lui suffisait juste de spécifier son choix.

n°2315204
MaybeEijOr​Not
but someone at least
Posté le 12-05-2018 à 10:03:42  profilanswer
 

Bonjour,
 
Nous sommes dans la catégorie programmation du forum et le sujet est dans la sous-catégorie C++, mais oui la personne pourrait repréciser.  :hello:


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2315206
gilou
Modérateur
Modzilla
Posté le 12-05-2018 à 10:06:56  profilanswer
 

On est dans un topic Programmation C++, pas dans un topic logiciel Excel.
Dans un contexte programmation C++, un tableau a un sens précis comme type de données. Dans ce conteste, sa question (cf le titre) signifie "comment puis-je remplir une structure de type tableau à partir de données CSV contenues dans un fichier" (si ce n'est pas le cas, il n'a qu'a spécifier correctement son problème au lieu de dire "tout est dans le titre" ).
D'autre part, il n'a pas dit ensuite ce qu'il comptait faire des données lues, on peut donc supposer, dans un contexte de programmation, qu'il va les exploiter dans la suite de son programme C++ (bref, rien ne dit qu'il veut juste afficher des données).
Et vu que l'auteur a déjà créé des sujets spécifiques relatifs à la programmation C++ sur ce forum, cf https://forum.hardware.fr/hfr/Progr [...] 6495_1.htm par exemple, ça a un sens de lui répondre dans ce contexte.
[incidemment jujuf1, plutôt que remplir un tableau bi-dimensionnel, remplir un vecteur de tableau unidimensionnel (ta ligne découpée en champs) serait peut-être plus adapté à tes besoins]
 
Et sinon, dans un contexte programmation hors C++, pour manipuler des données, il y a des langages particulièrement adaptés comme perl (et donc sans doute aussi python), qui lisent un fichier CSV dans une structure perl en une ligne de code, quitte ensuite à l'utilisateur d'exploiter les données lues.
 
Parce que si c'est juste pour visualiser le contenu d'un fichier CSV, pas besoin d'avoir recours à Excel, un coup de clic Google et on trouve par exemple ceci: http://www.becsv.com/csv-viewer.php qui, en plus de visualiser, permet aussi, entre autres, de convertir un fichier CSV en tableau HTML, format bien plus universel (car ne nécessitant pas un logiciel propriétaire) pour une visualisation de données.
 
 
A+,
Edit@MaybeEijOrNot: Nos posts se sont croisés.

Message cité 1 fois
Message édité par gilou le 12-05-2018 à 10:23:45

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2315879
jujuf1
Buggé n'est pas joué
Posté le 25-05-2018 à 19:33:01  profilanswer
 

Salut à tous. Merci pour vos réponses. J’avoue avoir mis de côté mon projet c++ pour le moment  
 
Merci et @+

n°2316768
404 Not Fo​und
Hacker Vaillant
Posté le 10-06-2018 à 14:51:54  profilanswer
 

gilou a écrit :

[incidemment jujuf1, plutôt que remplir un tableau bi-dimensionnel, remplir un vecteur de tableau unidimensionnel (ta ligne découpée en champs) serait peut-être plus adapté à tes besoins]


Pourquoi faire un vecteur de tableaux et pas un vecteur de vecteurs ?
 

n°2316850
gilou
Modérateur
Modzilla
Posté le 11-06-2018 à 20:15:25  profilanswer
 

Parce que a priori, chaque ligne de son tableau a un même nombre de champ (en général c'est ainsi que sont fait les CSV), donc on peut coller ça dans une structure qui va pas croitre ou diminuer.
Par contre, comme on ne connait pas le nb de lignes, on va mettre ça dans une structure qui va croitre.
 
A+,


Message édité par gilou le 11-06-2018 à 20:16:35

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2316862
404 Not Fo​und
Hacker Vaillant
Posté le 11-06-2018 à 23:06:57  profilanswer
 

Je m'attendais à un truc plus mystique [:joce]

mood
Publicité
Posté le 11-06-2018 à 23:06:57  profilanswer
 

n°2321565
vectra
Bordelais!
Posté le 02-10-2018 à 00:27:02  profilanswer
 

Tu ouvres ton fichier en lecture, tu fais des getlines, et tu tokenises avec le séparateur utilisé (mieux vaut le connaitre).
Tu enquilles chaque token dans un vecteur, un vecteur par ligne.
Jusqu'à la fin du fichier.
 
J'ai fait ça c't'aprèm, ça passait tout seul.
 
C'est un peu plus compliqué si tu veux des accès par colonne simple, mais pas tant que ça. Tu peux créer une map de string vers size_t si tu as des colonnes propres avec un identifiant en première ligne, et faire ton parcours en colonne en parcourant le vecteur de vecteurs.
 
J'avais déjà utilisé des libs sur sourceforge pour gérer des CSV, mais toutes celles que j'ai testées sont de sombres bouses immondes et ratées (ok, j'ai pas dû bien chercher). Ca va mieux d'y aller à la main que de reprendre un projet étudiant de 1ère année vendu comme une lib éprouvée.


Message édité par vectra le 02-10-2018 à 00:29:27
n°2321598
gilou
Modérateur
Modzilla
Posté le 02-10-2018 à 14:37:46  profilanswer
 

boost/tokenizer et basta.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2321954
GroXx
Posté le 09-10-2018 à 11:48:01  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Moyen le plus simple pour lire des fichiers CSV --> Tableau

 

Sujets relatifs
Actualiser un organigramme PPT à partir d'un tableau excelProgramme simple pour récupérer informations système d'une machine lin
Max de chacune des dimensions d'un tableau multidimensionnelComment identifier les fichiers ?
PHPUnit verifier le type de donnée dans un tableauSuppression liste fichiers sur postes réseauw
recherche liste mot dans plusieurs fichiersMise en forme Format CSV "*.cxr"
Données dans tableau après un fetchAll()Lister ouverture fichiers par rapport date
Plus de sujets relatifs à : Moyen le plus simple pour lire des fichiers CSV --> Tableau


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR