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

Dotnet Discussion :

Importation d'un fichier texte sous format excel [Débutant]


Sujet :

Dotnet

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    Points : 59
    Points
    59
    Par défaut Importation d'un fichier texte sous format excel
    Bonjour,

    J'ai un fichier texte qui correspond :

    Plage Sable Mer
    Vert Rouge Orange


    Je veux importer ces chaînes de caractères dans un tableau Excel tout en respectant la disposition de ces chaînes dans le fichier texte de base en C#.

    Pourriez-vous m'aider.

    Merci!

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    pour la lecture du fichier texte ca se passe dans system.io.* (file.readalllines par exemple)
    après il y a split et d'autres choses comme indexof qui permettent de découper le texte lu

    pour l'écriture dans excel, il y a l'interop (compliqué mais très souple) :
    .A1 = telle valeur
    .B7 = telle valeur (je schématise, le code est un peu plus chiant)
    ou alors oledb (très simple mais nécessite un fichier "formaté" avec des noms de colonne) :
    du sql type
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into [nomfeuill] (nomcol1, nomcol2) values (value1, value2)

    il y a aussi le sdk openxml de microsoft, mais ca fait mal à la tête
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Pour lire le fichier texte et le distribuer en champs, tu peux utiliser TexFieldParser avec un exemple en Caiguisé par ici



    Sinon, pour pousser un plus loin la réponse de Pol63, tu peux aussi utiliser deux bibliothèques gratuites découlant de OpenXML, mais plus maniables. Toutes les deux sont disponibles sur CodePlex :

    ClosedXML (Déménagé vers GitHub)

    EPPLus
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    Merci pour vos réponses!

    Je précise que je n'ai pas de nom de colonnes dans mon cas. Je veux formater mon fichier texte en excel.

    Par conséquent:
    pour: un fichier texte de path connu et de contenu (par exemple)
    Plage Sable Mer
    Vert Rouge Orange

    J'ai:
    Cell[1,1]=Plage Cell[1,2]=Sable Cell[1,3]=Mer
    Cell[2,1]=Vert .........

    J'ai constaté que la méthode oledb ne correspond pas à ce que je veux faire.

    Vous m'avez proposé beaucoup de méthode et je sais pas laquelle correspond à ce que je veux faire.

    Merci!

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    toutes sauf celle d'oledb permettent de remplir les cases comme on veut (et beaucoup d'autres choses)

    celle de l'interop nécessite d'avoir excel d'installé, et le code ressemble à du code vba

    sdk oepnxml et les 2 dérivés cités par clementmarcotte sont plus récentes, tu dois avoir des exemples de code sur les siennes, tu verras si le code te convient
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    Merci pour ta réponse! C'est intéressant !

    J'utilise la méthode interop mais je n'arrive pas à bien placer les chaînes de caractères dans les bonnes cellules. En effet, je mets toutes la lignes dans toutes les cellules au lieu de les placer chaînes par chaînes.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     //Start Excel and get Application object.
                 Microsoft.Office.Interop.Excel.Application oXL;
                  Microsoft.Office.Interop.Excel._Workbook oWB;
                  Microsoft.Office.Interop.Excel._Worksheet oSheet;
                  Microsoft.Office.Interop.Excel.Range oRng;
                  object misvalue = System.Reflection.Missing.Value;
                  oXL = new Microsoft.Office.Interop.Excel.Application();
                  oXL.Visible = true;
     
                  //Get a new workbook.
                  oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(""));
                  oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;
                  // ligne dans le fichier
                  var lineCount = File.ReadLines(textBox1.Text).Count();
                  string[,] MatrixString = new string[14000,14000];
                  using (StreamReader sr = new StreamReader(textBox1.Text))
                  {
                      string line = sr.ReadLine();
                      int nbre_column = 0;
     
                      string text = sr.ReadToEnd();
                     // int ColumnsCount = sr.ReadLine().Split(' ').Length; 
                      string[] lines = text.Split(' ');
                      foreach (string s in lines)
                        {
                          //MessageBox.Show(s);
                          nbre_column++;
                        }
                      // MessageBox.Show(nbre_column.ToString());
     
                      string[] readText=File.ReadAllLines(textBox1.Text);
     
                          for (int i = 0; i < lineCount; i++)
                          {
                              for (int j = 0; j < nbre_column; j++)
                              {
                               foreach (String word in text.Split(' '))
                              {
     
     
                                  MatrixString[i, j] = word;
                              }
     
     
                          }
                      }
     
     
     
     
     
                      for (int i =0; i < lineCount; i++)
                      {
                          for (int j = 0; j < nbre_column; j++)
                          {
                              oSheet.Cells[i+1, j+1] = MatrixString[i,j];
                          }
                      }
     
                      }
    Merci de m'aider à corriger ce problème!

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 132
    Points : 59
    Points
    59
    Par défaut
    Une réponse S'il vous plaît?

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    mets une paire de points d'arrêt pour vérifier le contenu des variables (matrix, nbligne, nb colonne ...)

    et je crois que c'est .cells(...).value = valeur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Points : 625
    Points
    625
    Par défaut
    Salut,
    tout dépend du but de ton application.
    Si tu n'as pas besoin d'écrire en direct dans le fichier Excel, le plus simple est de bêtement créer un fichier .csv
    Tu importes cette chaine dans Excel :

    Plage;Sable;Mer[retour à la ligne]
    Vert;Rouge;Orange[retour à la ligne]

    et ça fera l'affaire.
    "Essayer est le premier pas vers l'Echec !" (Homer Simpson)

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Points : 625
    Points
    625
    Par défaut
    tu peux aussi générer le fichier .csv et l'ouvrir avec Excel par code dans la foulée..
    "Essayer est le premier pas vers l'Echec !" (Homer Simpson)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importer les données d'un fichier texte sous Excel
    Par luksvibes dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/06/2013, 15h47
  2. Importer données de fichier texte sous MATLAB
    Par Amaury63 dans le forum MATLAB
    Réponses: 14
    Dernier message: 18/05/2010, 15h14
  3. Réponses: 5
    Dernier message: 09/01/2008, 07h54
  4. importation d'un fichier texte: Pb format Date
    Par steph1964 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 28/06/2007, 09h00
  5. Réponses: 2
    Dernier message: 04/06/2007, 15h39

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