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 :

sauvegarde d'un fichier excel csv sous le format xls


Sujet :

C++Builder

  1. #1
    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
    Points : 3 766
    Points
    3 766
    Par défaut sauvegarde d'un fichier excel csv sous le format xls
    il y a quelques jours j'ai repondu a un poste de sony351
    il demandait de sauvegarder un fichier excel ouvert en csv sous le format excel xls, j'ai renvoye une reponse qui lui convenait mais partielle, la sauvegarde comporte d'autres parametres tous fonctionnent, sauf un de ces parametres qui me donne un peu de soucis, quand je sauvegarde avec un mot de passe pour l'ouverture je ne peu pas sauvegarder deux fois de suite le fichier, je joint le code si quelqu'un a une idee.
    le code dans le .h
    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
     
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
     
    private:	// User declarations
    public:		// User declarations
            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    le code dans le .cpp
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    //---------------------------------------------------------------------------
     
    #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, ReadOnlyRecommended;
    Variant CreateBackup, Password, WriteResPassword;
    Variant Mot_passe;
    // ouverture d'un fichier au format csv
    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);
    //
    // preparation de la sauvegarde
    //
    FileFormat = -4143; // valeur de xlNormal "sauvegarde sous format classeur excel"
                        // pour les autres format de sauvegarde faire un essai avec VBE
     
    // creation d'un mot de passe protegeant l'ouverture du fichier
    // attention si le fichier a ete sauvegarde avec un mot de passe
    // il ne peut pas etre reecrit cela provoque une exception
    Mot_passe = "jpb"; // pour la protection du fichier
     
    Password = Mot_passe; // mot de passe pour proteger le fichier
     
    WriteResPassword = Mot_passe; // confirmation du mot de passe
     
    ReadOnlyRecommended = true; // fichier en lecture seule (False True Unassigned)
     
    // creation d'une copie si le fichier existe deja
    CreateBackup = true;  //Unassigned; // creation d'une copie (False True Unassigned)
     
    // fermeture d'un fichier (ouvert au format csv) au format xls
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\plan_gps\\PLAN_GPS\\télégraphe.xls";
    vXLWorkbook.OleProcedure("Saveas", vFileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup);
     
    // fermeture d'excel
    vMSExcel.OleFunction("Quit");
    // liberation memoire
    vMSExcel = Unassigned;
    }
    //---------------------------------------------------------------------------
    /*
    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
    */
    ce serait interressant de comprendre car personne n'a demande jusqu'a present a ma connaissance de verouiller un fichier xls.

  2. #2
    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
    Points : 3 766
    Points
    3 766
    Par défaut
    Apres avoir fait des essais c'est apres avoir donne un mot de passe que l'on ne peut pas sauver deux fois de suite le fichier quelqu'un a t'il une idee.

  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
    Points : 3 766
    Points
    3 766
    Par défaut
    J'ai une solution qui ne me plait pas pour eviter d'avoir une erreur en sauvegardant le fichier la seconde fois, quand il est verrouille par un mot de passe, c'est de faire un teste s'il existe on le detruit.
    Quelqu'un aurait il une piste

  4. #4
    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
    Points : 3 766
    Points
    3 766
    Par défaut
    Je poste le code qui fonctionne mais pas comme je le voudrais, j'en ai profite pour ajouter la mise en forme du texte, type de fonte, style, dimension, couleur.
    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
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
    #pragma link "Word_2K_SRVR"
    #include <utilcls.h>
    #include "Open_Word.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    // declaration des variables public
    Variant vMSWord , vWDocument , vWDocuments;
    Variant vFileName, vContent, Sel, TypeText;
     
    // declaration des procedures
    PropertyGet GetSel("Selection");
    Procedure insert("InsertAfter");
    Procedure AddText("TypeText");
     
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
     
    //----------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     
    try
    {
        vMSWord = Variant::GetActiveObject("Word.Application");
    }
    catch(...)
    {
        vMSWord = Variant::CreateObject("Word.Application");
    }
     
    vMSWord.OlePropertySet("Visible",true);
     
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\plan_gps\\PLAN_GPS\\télégraphe.csv";
    vWDocuments = vMSWord.OlePropertyGet("Documents");
    vWDocument = vWDocuments.OleFunction("Open", vFileName);
    Sel = vMSWord.Exec(GetSel);
    }
     
    //-----------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    vMSWord.OleFunction("Quit");
    vMSWord = Unassigned;
    Application->Terminate();
    }
     
     
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    //AddText.ClearArgs();
     
    Variant Selection = vMSWord.OlePropertyGet("Selection");
    Variant Font = Selection.OlePropertyGet("Font");
    Variant vMSWord, vName;
    // nom de la fonte
    vName = "Arial"; //"Wingdings 3";
     
    // texte entre sans mise en forme
    TypeText = (Memo1->Lines->Text); // soit un TMemo
    AddText.ClearArgs();
    Sel.Exec(AddText << TypeText);
     
    // texte entre avec mise en forme
    TypeText = (Edit1->Text); // soit un TEdit
    AddText.ClearArgs();
     
    //TypeText = "insertion de texte "; // soit en dur
    Sel.Exec(AddText << TypeText);
     
    // la fonte du texte entre et parametree
    // Nom, Style gras, dimension, couleur
    Font.OlePropertySet("Name", vName);
    Font.OlePropertySet("Bold", "1");
    Font.OlePropertySet("Size", "20");
    Font.OlePropertySet("ColorIndex", 6);
     
    AddText.ClearArgs();
    }
    //---------------------------------------------------------------------------
    La solution de detruire le fichier pour le reecrire ne me plait pas quelqu'un aurait il une idee

  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
    Points : 3 766
    Points
    3 766
    Par défaut
    La solution trouvee ne me plait pas, pour eviter une erreur en sauvegardant le fichier la seconde fois, quand il est verrouille par un mot de passe, c'est de faire un teste s'il existe on le detruit.
    Quelqu'un aurait il une piste, je n'ai toujours pas de solution, si c'etait corrige on pourrait mettre le programme dans la FAQ.

  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
    Points : 3 766
    Points
    3 766
    Par défaut
    J'entrevois une solution cepandant il ne manque une precision.
    Pour pouvoir ecrire dans le fichier protege il faut imperativement l'ouvrir, et je ne vois pas comment avoir deux fichiers ouverts en meme temps.

Discussions similaires

  1. Sauvegarde automatique de fichier excel sous un autre nom
    Par Jonathan Raucy dans le forum Excel
    Réponses: 1
    Dernier message: 30/01/2008, 14h37
  2. [MySQL] convertir un fichier excel(*.csv) en un (*.sql)
    Par rhani2010 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/10/2006, 19h39
  3. Réponses: 2
    Dernier message: 07/09/2006, 12h41
  4. Import de fichier Excel (CSV) dans MySQL
    Par mathieu77186 dans le forum Outils
    Réponses: 2
    Dernier message: 27/03/2006, 23h23
  5. Réponses: 1
    Dernier message: 02/02/2006, 14h26

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