IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Connaitre le type d'un fichier texte


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    février 2020
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2020
    Messages : 363
    Points : 681
    Points
    681
    Par défaut Connaitre le type d'un fichier texte
    Bonjour,

    J'utilise ce code pour connaitre le type de fichier texte (délimité ou à longueur fixe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Using FileReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(strFichier)
                MessageBox.Show(FileReader.TextFieldType.ToString)
     
            End Using
    Or, quel que soit le fichier j'ai toujours Delimité qui ressort, même si c'est un fichier à longueur fixe sans délimiteur (c'est sûr que c'est un fichier à longueur fixe car c'est nous qui le créons).

    Merci de votre retour

    ONTAYG

  2. #2
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Enseignant retraité
    Inscrit en
    novembre 2013
    Messages
    1 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant retraité

    Informations forums :
    Inscription : novembre 2013
    Messages : 1 482
    Points : 2 736
    Points
    2 736
    Par défaut
    Bonjour,
    Je ne crois qu'il y ait un outil à cet effet.
    Il est possible d'obtenir des éléments de réponse mais ils ne seront absolument sûr (sauf à analyser toutes les lignes) :
    - si les champs sont de longueurs fixes, toutes les lignes du fichier ont la même longueur;
    - si les champs ne sont pas de longueurs fixes, il y a un caractère séparateur entre chacun (la virgule pour un csv, par exemple).
    Il faudrait donc écrire un algorithme d'analyse du fichier ...

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    février 2020
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2020
    Messages : 363
    Points : 681
    Points
    681
    Par défaut
    Bonjour,

    Je te remercie de ton retour.

    Pourtant dans l'aide il semble que ce type d'instruction fonctionne.

    ONTAYG

  4. #4
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Enseignant retraité
    Inscrit en
    novembre 2013
    Messages
    1 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant retraité

    Informations forums :
    Inscription : novembre 2013
    Messages : 1 482
    Points : 2 736
    Points
    2 736
    Par défaut
    Oui ...
    Bien entendu, je ne sais rien du problème que tu traites, mais il me semble qu'ordinairement, on ne "mélange" pas des fichiers de formats différents : Word n'ouvre pas les xls, Excel n'ouvre pas les doc, Notepad non plus, du moins pas de façon "lisible".
    Peut-être que si tu nous en dis plus sur ton projet, il viendra de meilleures idées ..

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    février 2020
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2020
    Messages : 363
    Points : 681
    Points
    681
    Par défaut
    Bon, quelques explications s'imposent.

    Je travaille dans une société où je reçois différents types de fichiers cela peut-être du .txt, du .csv du excel au autre (ce sont à 99 % des fichiers d'adresses)

    Actuellement nous importons ces fichiers dans Access, qui à l'aide de son assistant nous détecte le type de fichier (délimité et fixe) et on a les fichiers Excel.

    On fait différentes manipulations et de contrôle manuels (code postal, étrangers et autres).

    Ce que l'on souhaite faire c'est un outil où lorsque l'on colle le fichier dedans (par glissement qui fonctionne) on détecte le type de fichier (txt, excel) cela est OK.

    Le but est donc de déterminer si le fichier texte est de type à longueur fixe ou en délimité pour pouvoir le mettre dans une grille pour le visualiser et en même temps lancer des contrôles.

    Ensuite ce fichier quelque soit l'origine sera transformé en csv avec délimiteur.

    Au lieu de faire des cases à cocher ou autre je voulais tester le fichier texte (type et encodage).

    Voilà

  6. #6
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Enseignant retraité
    Inscrit en
    novembre 2013
    Messages
    1 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant retraité

    Informations forums :
    Inscription : novembre 2013
    Messages : 1 482
    Points : 2 736
    Points
    2 736
    Par défaut
    Comme ça je comprends bien et je dois admettre que je n'ai pas de solution. Mais j'espère que quelqu'un pourra t'aider.
    Une suggestion quand même, puisque Access permet le traitement que tu veux, ne t'est-il pas possible d'écrire ton outil en Access ? Perso, j'aurais bien des difficultés à programmer cela, je n'ai jamais été programmeur Access.
    Bonne chance ...

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    février 2020
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2020
    Messages : 363
    Points : 681
    Points
    681
    Par défaut
    Re

    Je peux le faire sous Access, cela fait des années que je développe avec, et même avant en VB6 mais cela c'est fini.

    Mais je voulais une application autonome et plus rapide, Access est lent quand j'ai de gros fichiers.

    J'arrive à faire pas de truc en vb.net, mais je voulais faire un outil un peu différent.

    Merci quand même

    ONTAYG

  8. #8
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    mars 2002
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2002
    Messages : 1 144
    Points : 2 516
    Points
    2 516
    Par défaut
    Comment utiliser TextFieldParser.TextFieldType pour déterminer si un fichier est de type longueur fixe ou délimité :

    https://learn.microsoft.com/fr-fr/do...ltiple-formats

    Si la méthode de convient pas, analyser le fichier soit même : lire toutes les lignes et vérifier soit qu'elles ont toutes le même nombre de champs soit qu'elles ont toutes la même longueur. Concernant le format Excel, je pense qu'en début de fichier, il y a quelques octets qui précise que ce fichier est un fichier au format xls ou xlsx.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  9. #9
    Membre expérimenté Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    juin 2019
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : juin 2019
    Messages : 1 096
    Points : 1 670
    Points
    1 670
    Par défaut
    Bonsoir,
    Si ton fichier est a taille fixe chaque ligne contient le même nombre de caractères.

    Pour intégrer ce type de fichier tu dois connaître obligatoirement la taille de champs ?

    Donc
    1. tu additionnes la taille de tous le champ
    2. Tu multipliés par 2 pour avoir le nombre d'octets par lignes
    3. Tu fais la taille du fichier Modulo nombre octets par ligne ça doit donner zéro si ton fichier est champs taille fixe !

    Maintenant tu peux créer un ficher shema.ini et
    gérer ton importation directement dans Access par requête !

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    février 2020
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2020
    Messages : 363
    Points : 681
    Points
    681
    Par défaut
    Bonjour,

    Merci à tous pour vos réponses, je vais étudier les différentes propositions pour voir ce que je peux en ressortir.

    Je vous ferais un retour dans la semaine.

    ONTAYG

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    février 2020
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2020
    Messages : 363
    Points : 681
    Points
    681
    Par défaut
    Bon,

    En fait quand on regarde les aides je ne trouve pas les méthodes top de top.

    Malgré mes recherches je vais être obligé d'analyser les premières lignes de mes fichiers (Excel c'est autre chose).

    Je ne comprends pas qu'il y ait des choses plus simples, et peut-être une bibliothèque, mais je n'ai pas trouvé.

    @Thumb down : je veux essayer de me passer d'Access.

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    septembre 2010
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : septembre 2010
    Messages : 192
    Points : 296
    Points
    296
    Par défaut
    si c'est une longueur fixe, les champs sont forcément complétés par un espace, or l'espace est aussi un délimiteur.
    D'ailleurs quand tu ouvres un fichier csv/txt avec excel et que tu veux traiter les données, il te propose de choisir si les champs sont délimités (et avec quel(s) caractère(s)) ou si les champs ont une taille fixe et on demande de placer un taquet pour délimiter les champ.

    Donc pas d'autres choix de lire au moins 2 lignes pour savoir si longueur fixe, et cette lecture permettra aussi de connaitre l'encodage.

    Et d'après la doc de TexFieldType, ce n'est pas une propriété initiée par la lecture du fichier, mais c'est le programmeur qui la définit pour l'utilisation des autres méthodes de lecture/écriture. https://learn.microsoft.com/fr-fr/do...ltiple-formats

Discussions similaires

  1. Connaitre le type d'un fichier
    Par Syarko dans le forum Général Java
    Réponses: 3
    Dernier message: 13/11/2015, 14h34
  2. [Débutant] Comment connaitre le type d'encodage des fichiers textes ?
    Par saxrub dans le forum VB.NET
    Réponses: 1
    Dernier message: 30/03/2012, 12h26
  3. connaitre le type d'un fichier sans extension
    Par Atasuke dans le forum C
    Réponses: 5
    Dernier message: 07/11/2011, 17h56
  4. Connaitre le type d'un fichier sans son extension
    Par ionone dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 15/07/2009, 15h19
  5. Connaitre le type d'un fichier.
    Par youp_db dans le forum C
    Réponses: 4
    Dernier message: 18/07/2006, 19h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo