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 :

OLE : Créer un tableau dans un document Libre Office Writer


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre averti Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Points : 443
    Points
    443
    Par défaut OLE : Créer un tableau dans un document Libre Office Writer
    Bonjour à tous,

    J'essaie de développer une application qui créer un tableau dans un document libre office writer mais je me heurte à certaines difficultés.

    1) J'arrive bien à créer un tableau mais comment change-t-on la largeur de chaque colonne ?
    2) Le tableau se créé au début du document mais comment choisir l'emplacement dans le document pour insérer un tableau ? par rapport à un repère de texte (=signet) par exemple.

    Voir exemple ci-dessous que je joins aussi en pièces jointe avec le fichier test .odt

    Merci

    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
     
    unit Unit1;
     
    interface
     
    uses
     
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,  ComObj,Winapi.ActiveX;
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      oApplication, oDeskTop, oTable, oDocument,oCols,oCol,oRows: OLEvariant;
      LoadParams : OLEVariant;
      NomFichier : String;
      i : integer;
    Begin
        oApplication := CreateOleObject('com.sun.star.ServiceManager');
        oDeskTop     := oApplication.createInstance('com.sun.star.frame.Desktop');
        LoadParams   := VarArrayCreate([0, -1], varVariant);
     
        //NomFichier := ExtractFilePath(Paramstr(0))+'LO_WriterTemplate.odt';
        NomFichier := 'c:\temp\OO\LO_WriterTemplate.odt';
        NomFichier := StringReplace(NomFichier, '\', '/', [rfReplaceAll, rfIgnoreCase]);
        oDocument  := oDesktop.LoadComponentFromURL( 'file:///'+NomFichier, '_blank', 0,  LoadParams);
        oTable := oDocument.createInstance('com.sun.star.text.TextTable');
        oTable.initialize(1,4);
        oTable.setPropertyValue('HoriOrient', 7); // LEFT_AND_WIDTH
        oTable.setPropertyValue('IsWidthRelative', true);
        oTable.setPropertyValue('RelativeWidth', 50);
        oTable.setPropertyValue('BackColor', $80); // fond bleu
     
        // Montre le tableau ici:
        oDocument.getText.insertTextContent(oDocument.getText.CreateTextCursor, oTable, False);
        // Rempli les cellules de la première ligne
        for i := 0 to 3 do oTable.getCellByPosition(i, 0).CreateTextCursor.setString(OleVariant('Col #'+IntToStr(i)));
     
        // Acces aux Colonnes du tableau
        oCols:=oTable.getColumns; // oCols : XTableColumns
     
        // Pour chaque colonne du tableau:
        for i := 0 to oCols.getcount-1 do
        Begin
          oCol := oCols.getByIndex(i);  // oCol : xColumns
         // !!! oCol.setPropertyValue('Width',100); // ==> ne fonctionne pas ! Exception !!
        End;
     
        // Ajoute une ligne au tableau
        oRows := oTable.getRows;
        oRows.insertByIndex(1,1);
        // et renseigne la 1ere colonne
        oTable.getCellByPosition(0, 1).CreateTextCursor.setString(OleVariant('Second line'));
     
        ShowMessage('Press a key to close the document');
        // Ferme le document
        oDocument.dispose;
     
    end;
    end.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Points : 443
    Points
    443
    Par défaut
    Je reviens tardivement sur ce fil mais en fait il suffisait de retirer ces lignes et cela fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    oTable.setPropertyValue('HoriOrient', 7); // LEFT_AND_WIDTH
    oTable.setPropertyValue('IsWidthRelative', true);
    oTable.setPropertyValue('RelativeWidth', 50);

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

Discussions similaires

  1. [OOo] import de données xml dans un document open office writer
    Par anouka dans le forum XML/XSL et SOAP
    Réponses: 11
    Dernier message: 02/08/2008, 20h20
  2. comment créer un tableau dans un formulaire ???
    Par trotters213 dans le forum IHM
    Réponses: 21
    Dernier message: 03/07/2007, 08h31
  3. Créer un tableau dans une CDialog
    Par Sachiel31 dans le forum MFC
    Réponses: 5
    Dernier message: 29/08/2006, 16h55
  4. [VBA][WORD]Identifier un tableau dans un document
    Par mister3957 dans le forum VBA Word
    Réponses: 15
    Dernier message: 10/01/2006, 13h56
  5. Réponses: 14
    Dernier message: 13/10/2005, 12h55

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