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

API, COM et SDKs Delphi Discussion :

[D6][Excel] Comment enregistrer en format csv ?


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Par défaut [D6][Excel] Comment enregistrer en format csv ?
    Bien le bonjour tout le monde

    Ca fait quelques temps que je bosse sur Delphi et donc que je survole votre forum, jusqu'ici j'y ai toujours trouvé mon bonheur, mais là je sèche méchamment...

    Mon problème est simple en tout cas : A l'aide d'une liaison OLE, je pilote Excel pour mettre à jour un classeur donné.
    Ceci fait, je voudrais que mon appli l'exporte automatiquement en format csv, avec des points-virgules pour séparateurs...

    Et je ne trouve aucune info là-dessus...

    Si quelqu'un pouvait m'aider?

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Question bête : tu veux que ce soit Excel qui sauve une feuille au format CSV (le déclenchement de cette sauvegarde étant réalisé par OLE), ou tu veux que ton appli Delphi sache créer un fichier CSV qui pourra être ensuite importé par Excel via une demande OLE ?

    Je ne suis peut-être pas réveillé, mais j'arrive pas à trancher par rapport à ta question, et je n'ai le code que pour le second cas... ;-)
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Par défaut
    Autant pour moi j'ai oublié de préciser, je parle du premier cas que tu énonces.

    Je veux demander à Excel d'enregistrer en format .csv un fichier xls déjà ouvert, sur lequel j'aurais apporté des modifs.

    (Et ensuite je devrais encore exporter sous un autre format, lol mais ça, je verrais après )

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Bon, je n'avais le code que pour le 2nd cas... Tu sais déjà comment fonctionne un lien OLE/DDE (en gros), ou tu en est au stade "Quel est le composant à utiliser ?"

    Sinon, je peux te donner les méthodes de TExcelApplication que j'utilise pour importer un CSV et le sauver au format XLS, si ça t'arrange...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Par défaut
    Désolé du retard de la réponse (Mon formateur était en visite sur mon lieu de stage ce matin lol : 36-15 ma vie )

    Donc pour les liaisons OLE, jusqu'à maintenant y'a pas trop de problèmes, j'utilise un comobj pour ouvrir Excel, ses classeurs, les sauvegarder, etc, depuis mon appli. J'avais essayé vite fait d'utiliser un texcelapplication au début mais ça m'avait paru moins accessible !

    Et arrivé ou j'en suis, je ne suis pas sur d'avoir le temps de revenir en arrière et refaire toutes les méthodes... A moins qu'on ne puisse utiliser les deux, mais ça m'étonnerait?

    En fait, grossièrement :

    Si j'appelle un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     OleWorkbook.SaveAs(aFileName)
    sous un format .csv, ça passe, je me retrouve avec monfichier.csv, mais pas du tout mis en forme lol, il a juste changé l'extension du xls dorigine...

    Ce que je cherche c'est le moyen de demander à Excel d'appliquer les séparateurs ";" en plus quoi ^^

    Sinon, je peux te donner les méthodes de TExcelApplication que j'utilise pour importer un CSV et le sauver au format XLS, si ça t'arrange...
    Pourquoi pas... Peut-être que ça pourra aider à piger la méthode..

    Merci de ton aide en tout cas

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par ShinGaruda
    Désolé du retard de la réponse (Mon formateur était en visite sur mon lieu de stage ce matin lol : 36-15 ma vie )
    Pas grave : vu le salaire des stagiaires, faut bien arrondir ses fins de mois avec des serveurs Minitel... (36-15 "Je suis maître de stage et j'aime casser du stagiaire"... )

    Citation Envoyé par ShinGaruda
    Donc pour les liaisons OLE, jusqu'à maintenant y'a pas trop de problèmes, j'utilise un comobj pour ouvrir Excel, ses classeurs, les sauvegarder, etc, depuis mon appli. J'avais essayé vite fait d'utiliser un texcelapplication au début mais ça m'avait paru moins accessible !
    De mémoire (c'est vieux), je crois que j'avais utilisé un TExcelApplication parceque les méthodes étaient plus simple à "retrouver" via l'aide VBA... Comme je ne suis pas franchement un dieu d'Excel, je voulais faire VITE...

    Principe :
    - Enregistrer une macro VBA avec Excel,
    - Ouvrir le code VBA,
    - Importer recta (ou presque) les fonctions dans Delphi : les noms des méthodes sont les même (cf. complétion du code pour vérifier), et les paramètres aussi.

    Citation Envoyé par ShinGaruda
    A moins qu'on ne puisse utiliser les deux, mais ça m'étonnerait?
    Bah, pourquoi pas ? Ca pourrait être possible, en plus...

    Si j'appelle un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     OleWorkbook.SaveAs(aFileName)
    sous un format .csv, ça passe, je me retrouve avec monfichier.csv, mais pas du tout mis en forme lol, il a juste changé l'extension du xls dorigine... [/quote]J'avais moi aussi remarqué un comportement similaire.

    Citation Envoyé par ShinGaruda
    Ce que je cherche c'est le moyen de demander à Excel d'appliquer les séparateurs ";" en plus quoi ^^
    En clair, ça s'appelle "exporter"... ;-)

    Citation Envoyé par ShinGaruda
    Pourquoi pas... Peut-être que ça pourra aider à piger la méthode..
    Voilà un extrait du code. Il ouvre un CSV externe (généré par mon application) avec Excel, et le "transforme" en XLS.
    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
    procedure TMainForm.SaveAsXLS(const FileName: String);
    Var
       CSV    : String            ;
       _Excel : TExcelApplication ;
    begin
         _Excel:=Nil;
         Try
            // C'est un fichier CSV que l'on sauve, tout d'abord...
            // Ce sont d'autres méthodes du programme qui sauvent en CSV.
            CSV:=ExpandFileName(ChangeFileExt(FileName,feTMP));
            Try
               SaveAsCSV(CSV) ;
            Except
                  DeleteFile(CSV);
                  Raise;
            End;
            // On efface à la main, sinon Excel demande la confirmation.
            If FileExists(FileName) Then
               DeleteFile(FileName);
            // Création du serveur Excel.
            _Excel:=TExcelApplication.Create(Nil);
            // Ouverture du serveur Excel.
            _Excel.Connect;
            // Ouverture du .CSV
            _Excel.Workbooks.OpenText(CSV,xlWindows,1,xlDelimited,xlTextQualifierDoubleQuote,False,False,True,False,False,False,EmptyParam,EmptyParam,EmptyParam,1036);
            // Sauvegarde en .XLS
            _Excel.Workbooks.Get_Item(1).SaveAs(ExpandFileName(FileName),OleVariant(xlWorkbookNormal),EmptyParam,EmptyParam,False,False,xlNoChange,xlUserResolution,False,EmptyParam,EmptyParam,1036);
         Finally
                // Fermeture du serveur Excel.
                If Assigned(_Excel) Then
                   Try
                      _Excel.Quit;
                      _Excel.Disconnect;
                   Finally
                          FreeAndNil(_Excel);
                   End;
                DeleteFile(CSV);
         End;
    end;
    Citation Envoyé par ShinGaruda
    Merci de ton aide en tout cas
    No prob. J'espère que ça pourra t'aider.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

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

Discussions similaires

  1. [XL-2007] Problème d'enregistrement sous format .csv
    Par kami66 dans le forum Excel
    Réponses: 1
    Dernier message: 04/12/2013, 10h35
  2. Réponses: 1
    Dernier message: 23/02/2012, 22h17
  3. [Excel 2007] Enregistrement automatique en csv
    Par Ambrocbt dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/10/2011, 12h10
  4. [Toutes versions] Pb d'enregistrement au format CSV
    Par goldenboy10 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/08/2009, 11h56
  5. [Pilotage d'Excel]Comment définir les formats des cellules
    Par Masmeta dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/04/2008, 18h34

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