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 :

Word et Delphi


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 72
    Par défaut Word et Delphi
    j'ai fait un delestage du sujet précédant car il devenait un peu difficile de s'y retrouver.

    Mon probleme :
    ------------------
    Je veux pouvoir récupèrer le contenu des colones dans un document word (format RTF mais cela ne changera pas grand chose) [exemple de document dispo a http://www.jeuxetgains.com/site5/rappo.rtf]. J'ai plusieurs fichiers mais tous dispose des mêmes colonnes avec les même titres. Je veux pouvoir convertir vers une base Access les données que je lis (pour la gestion Delphi vers Access, je n'ai pas de problème).

    Mes outils :
    -------------
    Delphi 4.0 Pro (absence du composant Oleserver.dcu)
    Word 2002

    Mon code actuel :
    --------------------
    Il me permet juste d'ouvrir le fichier

    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
    unit Unit1; 
     
    interface 
     
    uses 
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
    StdCtrls, Comobj, ComCtrls; 
     
    type 
    TForm1 = class(TForm) 
    Button1: TButton; 
    Button2: TButton; 
    procedure Button1Click(Sender: TObject); 
    procedure Button2Click(Sender: TObject); 
    private 
    { Déclarations privées } 
    public 
    { Déclarations publiques } 
    end; 
     
    var 
    Form1: TForm1; 
    vMSWord : variant ; 
    OleApplication :variant; 
    vXLWorkbooks, vXLWorkbook : variant ; 
    vFileName : AnsiString ; 
    vSaveChanges : variant ; 
    vSheetName : AnsiString ; 
    vWorksheet : variant ; 
    vRange, vValue : AnsiString ; 
    vCell : variant ; 
    vWDocument, vWDocuments : variant; 
    T : variant ; 
     
     
    implementation 
     
    {$R *.DFM} 
     
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
    vMSWord := CreateOleObject('Word.Application.10'); 
    vMSWord.Visible := true ; 
    vFileName := 'c:\Windows\Bureau\Projet test\test.rtf'; 
    vWDocuments := vMSWord.Documents; 
    vWDocument := vWDocuments.Open(vFileName); 
    end; 
     
    end.
    [Balise [code] rajoutée par Nono40]

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Le début de l'histoire...
    http://www.developpez.net/forums/vie...r=asc&start=15

    Le mieux est de convertir le code proposé en utilisant des variants et/ou les objets de l'unité Word2002.

    Je suppose que tu utilises la bonne librairie de type, ie celle de Word2002.

    A+
    Laurent Dardenne

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 72
    Par défaut plus d'infos
    Je suppose que tu utilises la bonne librairie de type, ie celle de Word2002.
    C'est a dire ???

    Le mieux est de convertir le code proposé en utilisant des variants et/ou les objets de l'unité Word2002.
    Où puis trouver le relevé des objets de l'unite word 2002 ???

    En quel version de Delphi as tu developpez tron code que tu m'as cite ???

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut Re: plus d'infos
    Citation Envoyé par popeyes
    En quel version de Delphi as tu developpez tron code que tu m'as cite ???
    Avec la version 5.

    Pour la librairie de type tu dois importer un fichier .TLB qui se trouve dans le répertoire d'office. Utilise pour ce faire le menu 'Composant- Importer un contrôle ActiveX'.

    Une fois ceci fait tu disposeras d'une unité qui te permettras d'accéder aux objets Word 2002.

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Sinon regarde sur se site :
    http://sourceforge.net/projects/tpofficepartner/

    Regarde l'exemple ExTbl1u.pas

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 72
    Par défaut delphi 6 entreprise
    Pour simplifier mon probleme, j'ai installé Delphi 6 entreprise sur mon PC (version de démo). Ca me parait plus simple car il y a une palette de composants Office !!! Maintenant je vais essayer de reprendre ton code.

    l'importation d'un active X Office sur Delphi 4 n'a rien changé.

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    voici une solution ,
    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
     
    procedure TForm1.BtReadDocClick(Sender: TObject);
    var
      T          : Table;
      CurrentRow : Row;
     
      CelluleText  : String;
      myCols,NbCol : Integer;
      myRows,NbRow : Integer;
     
    begin
        // nombre de tableau dans le document = WordDocument1.Tables.Count
     
         // Récupére le tableau numéro 1
      T:=WordDocument1.Tables.item(1);
     
         // Récupére le nombre de ligne total
      NbRow := T.Rows.Count;
     
         // Récupére le nombre de Colonne total
      NbCol := T.Columns.Count;
     
        //Lecture du tableau ligne 1 colonne1
        //                   ligne 1 colonne2 ...
      For myRows:=1 to NbRow do
      begin
         // Récupére la ligne courante
       CurrentRow:=T.Rows.Item(myRows);
         // Récupére le nombre de colonne de la ligne courante
       NbCol:=CurrentRow.Cells.count;
     
       For myCols:=1 to NbCol do
        begin
           // Récupére le text pour un pré-traitement
         CelluleText:=T.Cell(myRows,myCols).Range.Text;
         if not VarisEmpty(CelluleText) then   // Traite les cellules vides
          begin
             // Supprime les Tabulations
           CelluleText := StringReplace(CelluleText,#$D, '', [rfReplaceAll]);
     
             // Supprime les coupures de ligne
           CelluleText := StringReplace(CelluleText, #$7, '', [rfReplaceAll]);
     
             //Mémorise dans la liste,
          LBLigneWord.Items.Add(CelluleText);
          end
        end;
        // Résultat au format Texte
      LBLigneWord.Items.SaveToFile('Resultat.txt');
     end;
    end;
    Cette portion de code annule et remplace la derniére proposée.



    A+
    Laurent Dardenne

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 72
    Par défaut merci
    Ton code est parfait, je fait le modifier pour l'adapter a mes besoins mais merci beaucoup.

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut
    cela m'a permit d'apprendre aussi qq chose
    A+
    Laurent Dardenne

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

Discussions similaires

  1. Insérer un tableau sous Word depuis Delphi
    Par muquet dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 11h59
  2. Comment utiliser Word avec Delphi 7 ?
    Par muquet dans le forum Débuter
    Réponses: 9
    Dernier message: 06/12/2005, 18h52
  3. ouverture de fichiers word dans delphi (sans utiliser word)
    Par poussinphp dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 11/07/2005, 14h25
  4. Sous Word depuis Delphi
    Par alexmorel dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 17/06/2004, 12h45
  5. [AUTOMATION WORD]Pilotage Word par Delphi
    Par Sunny dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 05/12/2002, 17h09

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