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

Delphi Discussion :

Manipuler des tableaux dans des documents OpenOffice avec Delphi


Sujet :

Delphi

Vue hybride

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 157
    Par défaut Manipuler des tableaux dans des documents OpenOffice avec Delphi
    Bonjour,

    Je développe sous Delphi. Je voudrais programmer une procédure qui me permet de manipuler des tableaux OpenOffice. En l’occurrence je voudrais insérer du texte dans les cellules de ce tableau. Par contre comme le nombre de lignes de mon tableau n'est pas fixe, Je ne peux pas utiliser la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bookmarks.getByName('reference')
    en insérant la référence manuellement dans le fichier open Office.

    En faisant une recherche, je suis tombé sur une documentation : http://www.freepascal.org/~michael/a...openoffice.pdf (Paragraphe Handling Tables)

    Par exemple le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        TC:=FDocument.GetTextTables;
        T:=TC.getByIndex(0);
        // Get number of rows, columns
     
        RCount:=T.getRows.getCount;
        CCount:=T.getColumns.getCount;
     
       For I:=0 to CCount-1 do
        begin
          S:=Trim(T.getCellByName(ColName(I)+IntToStr(RCount)).getString);
        end;
    Ce code permet de retourner le tableau créé dans le document et de récupérer le nos des cellules.

    Mais par exemple dans la dernière ligne de code ColName n'est pas reconnu par delphi
    Aussi dans la documentation les types TField et TDataSet sont utilisés mais ces types sont inconnus pour mon IDE (Delphi 2005). Je sais pas si c'est des unités qui manquent dans uses.

    Pouvez s'il vous plait m'aider à résoudre ces erreurs où m'indiquer d'autres méthodes pour manipuler les tableaux de documents OpenOffice

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 633
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    un simple tour dans la FAQ
    et vous auriez lu que l'on accède au cellules par leur position getcellbypostion (tableau base 0) plutôt que par leur nom
    Ce code permet de retourner le tableau créé dans le document et de récupérer le nos des cellules.
    je doute : une seule variable S pour la dernière colonne
    Mais par exemple dans la dernière ligne de code ColName n'est pas reconnu par delphi
    encore faudrait-il que cette variable fut définie

    en reprenant votre code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     var i : integer;
    begin
        RCount:=T.getRows.getCount;
        CCount:=T.getColumns.getCount;
     
       For i:=0 to CCount-1 do
        begin
          S:=Trim(T.getCellByPosition(I,RCount-1).getString);
        end;
    vous obtiendrez la même valeur de S avec
    ATTENTION CODE NON VERIFIE
    1-je ne sais pas à quoi correspond T
    2-je ne me rappelle plus si la position se définit en col,row ou row,col (c'en est même gênant non indiqué ni dans la FAQ ni dans le WIKI ! mais je penche pour col,row)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    S:=T.GetCellByPosition(ccount-1,rcount-1).getstring;
    //ou même peut être 
    //S:=T.GetCellByPosition(t.Endcolumn,t.EndRow).getstring
    Aussi dans la documentation les types TField et TDataSet sont utilisés mais ces types sont inconnus pour mon IDE (Delphi 2005)
    la documentation que vous citez, que j'ai survolé, semble travailler avec une table contenu dans une Base Open Office
    tout dépend ensuite de votre version D2005 à partir de la version pro (je n'ai pas/plus D2005 d'installé pour vérifier) , TField et TDataset sont définis dans l'unité DB

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 157
    Par défaut
    Merci pour votre aide,
    J'ai pu réussir mes manipulations à l'aide de la méthode getbyName mais c'est vrai que utiliser la position est certainement plus adéquat.

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

Discussions similaires

  1. [Débutant] operation sur des complexes dans des tableaux
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 5
    Dernier message: 05/03/2010, 15h34
  2. [Tableaux] Insérer des arrays dans des arrays
    Par DJ Caësar 9114 dans le forum Langage
    Réponses: 2
    Dernier message: 01/06/2009, 13h03
  3. des tableaux dans des tableaux
    Par zeder59 dans le forum Débuter
    Réponses: 7
    Dernier message: 19/03/2009, 11h50
  4. Faire apparaître la liste des tableaux et des figures dans la TDM
    Par Aline2611 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 7
    Dernier message: 07/06/2007, 15h11
  5. [COM] Trouver des mots dans des PDF et autres documents ?
    Par zyongh dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 02/11/2006, 14h23

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