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

C++Builder Discussion :

Excel csv choisir séparateur


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 94
    Par défaut Excel csv choisir séparateur
    Bonjour,
    Je voudrai charger un csv, j'ai vu du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    vFileName = "C:\\test2.csv";
      vNotUsed = Unassigned;
      vSeparator = 4;
      vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
      vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName, vNotUsed,
          vNotUsed,vSeparator);
    Mon fichier est séparé par des points virgules mais quand j'enregistre en fichier excel il me met tout dans la première colonne donc tous les champs sont regroupés dans la première colonnes avec les points virgules.
    Donc comment faire les amis ?
    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    en fait, tu l'enregistre avec l'extension CSV normalement excel ouvre directement avec comme séparateur ;
    sinon il y a un menu spécifique lorsque d'excel un fichier txt.

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Un lien dans la FAQ
    je pense que tu va trouver ce que tu veux
    apparament il y a enbiguite entre la valeur 2 et 4 du separateur ";" fait un essai

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 94
    Par défaut
    ok,
    mais en fait je voudrais ouvrir un csv pour l'enregistrer aussitôt en xls :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    vMSExcel = Variant::CreateObject("Excel.Application");
      vMSExcel.OlePropertySet("Visible", true);
      Variant vFileName, vNotUsed, vSeparator;
     
      vFileName = "C:\\test.csv";
      vNotUsed = Unassigned;
      vSeparator = 1;
      vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
      vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName, vNotUsed,
        vNotUsed, vSeparator);
     
      vXLWorkbook.OleProcedure("Saveas", "C:\\test.xls");

    Donc l'instance Excel apparaît comme il le faut (c'est à dire avec les champs bien séparés et au nom de test.csv
    Puis dans la suite du code il y a vXLWorkbook.OleProcedure("Saveas", "C:\\test.xls");

    qui m'enregistre bien ce fichier mais quand je l'ouvre tout apparaît avec une seule colonne dans laquelle il y a les valeurs séparé par des points virgules

    Donc comment faire ?

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    J'ai fais un essai qui fonctionne apparement chez moi
    le 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
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    Variant vMSExcel, vXLWorkbooks, vXLWorkbook;
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
    Variant vFileName, vNotUsed, vSeparator;
    
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\plan_gps\\PLAN_GPS\\télégraphe.csv";
    vNotUsed = Unassigned;
    vSeparator = 1;
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName, vNotUsed,
    vNotUsed, vSeparator);
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\plan_gps\\PLAN_GPS\\télégraphe.xls";
    vXLWorkbook.OleProcedure("Saveas", vFileName);
    }
    c'est la declaration du chemin de sauvegarde que j'ai change

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    J'ai crie victoire trop vite cela fait comme chez toi je cherche une solution.

  7. #7
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    On peut y arriver je l'ai fait en VBE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 24/07/2006 par blondelle
    '
     
    '
        ActiveWorkbook.SaveAs Filename:= _
            "C:\Documents and Settings\blondelle\Mes documents\plan_gps\PLAN_GPS\télégraphe.xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    End Sub
    par contre je ne sais pas le reprendre en BCB, dans le code il y a des extensions apres le nom de chemin
    l'extension de la sauvegarde est "Classeur Microsoft Office Excel"

  8. #8
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Ce coup ci j'ai vraiment trouve je joint le code
    le 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
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    Variant vMSExcel, vXLWorkbooks, vXLWorkbook;
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
    Variant vFileName, vNotUsed, vSeparator, FileFormat;
    
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\plan_gps\\PLAN_GPS\\télégraphe.csv";
    vNotUsed = Unassigned;
    vSeparator = 1;
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName, vNotUsed,
    vNotUsed, vSeparator);
    FileFormat = -4143;
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\plan_gps\\PLAN_GPS\\télégraphe.xls";
    vXLWorkbook.OleProcedure("Saveas", vFileName, FileFormat);
    }
    //---------------------------------------------------------------------------
    si tu regarde le code VBE c'est tres similaire quand on est en debugage sur le code VBE quand on pointe le curseur on a la valeur de la variable ici "FileFormat = -4143"
    tu peu meme ajouter un mot de passe il faut le confirmer c'est tout.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 94
    Par défaut
    Grand merci @ MONSIEUR blondelle
    T'aurais pas de la doc?
    Y'en avait une avant sur developpez.net mais j'la trouve plus dans les tutos
    Encore merci.

  10. #10
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    sony351 a ecrit:
    Grand merci @ MONSIEUR blondelle
    T'aurais pas de la doc?
    Y'en avait une avant sur developpez.net mais j'la trouve plus dans les tutos
    Encore merci.
    Pas de quoi mais "Monsieur" est de trop.
    Pour la Doc je confirme ce qui a deja ete dit il n'y en a pas si tu veux faire des recherches il y a essentiellement des exemples sous delphie, si tu veux lancer des recherches fait les avec "ole word" ou "automation word" il y a quelques site en allemand sinon tu peu t'inspirer d'un code VBE c'est dailleurs ce que j'ai fait, et le dernier recour c'est le FORUM.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 94
    Par défaut
    Oui Merci
    mais là j'ai un nouveau souci, en effet csv c'est bien mais le souci c'est que quand j'enregistre en xls avec le bon format et tout et tout ça marche sauf qu'il me fait sauter mes zéro devant dans mes céllules pour des numéros de téléphone par exemple
    alors j'essais avec du txt tt en regardant les exemples sous delphie mais là je bloque avec Array

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Workbooks.OpenText Filename:="E:\MD3\TEMP\Classeur1.txt", Origin:=xlMSDOS, _
            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _
            , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 2), _
            Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True
    Comment transformer ça en C++

  12. #12
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Sous Excel en VBE
    le code
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 31/07/2006 par blondelle
    '

    '

    ' Met au format Text les cellules A1 jusque A14
    Range("A1:A14").Select
    Selection.NumberFormat = "@"

    ' Met au format Text la colonne B
    Columns("B:B").Select
    Selection.NumberFormat = "@"

    End Sub

  13. #13
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Un lien sur la FAQ pour modifier le format d'une cellule
    la modification doit se faire avant de charger le fichier

Discussions similaires

  1. CSV -> Excel : Virgule comme séparateur par défaut
    Par ADbtr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/07/2010, 09h19
  2. [CSV] Imports Excel CSV à reformater
    Par boteha dans le forum Langage
    Réponses: 13
    Dernier message: 23/01/2006, 21h41
  3. Exporter des données d'un requete SQL vers excel (csv)
    Par PrinceMaster77 dans le forum ASP
    Réponses: 9
    Dernier message: 08/10/2005, 22h28
  4. [Excel] Excel et csv
    Par gledoux dans le forum Bibliothèques et frameworks
    Réponses: 16
    Dernier message: 01/08/2005, 14h45
  5. Import Excel / CSV
    Par aston_max dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 04/07/2004, 23h31

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