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

Lazarus Pascal Discussion :

Exporter de Lazarus vers Open Office [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 82
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut Exporter de Lazarus vers Open Office
    Bonjour à tous

    Quelqu'un a-t-il déjà exporté des données vers Open Office ?

    Rien dans les Faq, donc question sur le forum : j'ai un plantage par "Mémoire insuffisante". Précisons que la même opération en Delphi se déroule sans aucun problème. La taille de la table n'est donc pas en cause, me semble-t-il

  2. #2
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 507
    Points : 10 234
    Points
    10 234
    Par défaut
    J'avais commencé une classe pour Writer, que je n'ai pas eu le temps de finir.

    Si ça peut t'aider, je joins les sources (pour exemple)

    JS
    Fichiers attachés Fichiers attachés

  3. #3
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 82
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Merci pour la rapidité !!!!!
    Je charge et je regarde

  4. #4
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 82
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Malheureusement, comme je travaille avec le tableur Open Office, ce que j'ai reçu ne sert pas à grand chose.
    Voici le code. L'erreur de taille de mémoire se produit sur la dernière ligne
    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
      OpenDesktop := OpenOffice.createInstance('com.sun.star.frame.Desktop');
       properties:=VarArrayCreate([0,0],varVariant);
       CoreServ:= OpenOffice.CreateInstance('com.sun.star.reflection.CoreReflection');
       CoreServ.forName('com.sun.star.beans.PropertyValue').CreateObject(prop);
       prop.name:='Hidden';
       prop.Value:=True;  // ca cache pas la feuille mais openoffice
       properties[0]:=prop;
       Document := openDesktop.LoadComponentFromURL( 'private:factory/scalc', '_blank', 0,  properties);
     
       xNum_Feuille := 1;
     
        MonClasseur := Document.getSheets;
        xl_Str := 'Feuille' + InttoStr(xNum_Feuille);
        MaFeuille := MonClasseur.GetByName(xL_Str);    //'Feuille1'
     
        MesColonnes := Mafeuille.GetColumns;
        MaColonne := MesColonnes.GetByIndex(1);

  5. #5
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 195
    Points
    195
    Par défaut
    Bonjour

    Ce code pourrait t'être utile après transformation. J'utilise l'unité OOoTools fournies dans la PJ. Il se contente d'exporter le résultat d'une requête (query) vers une feuille de calcul. Le nom de la requête est fourni par un combobox

    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
    procedure TForm_Etat.SpeedButton1Click(Sender: TObject);
    var
        BM: TBookMark;
        Document: variant;
        MonClasseur: variant;
        MaFeuille: variant;
        x,y: integer;
     
      Procedure DansLaCase(const x,y: integer; const st: string; couleurfond: longint=-1; Format: integer=-1);
      var MaCellule: variant;
        astring: string;
        wstring: widestring;
      begin
        MaCellule := Mafeuille.getCellByPosition(x, y);
        astring := st;
        wstring:=astring;
        MaCellule.SetString(wstring);
        if couleurFond>=0 then
          MaCellule.CellBackColor := couleurfond;
    //    if Format>=0 then
    //      MaCellule.NumberFormat = Format;
      end;
     
      Procedure DansLaCase(const x,y: integer; const d: double;couleurfond: longint=-1; Format: integer=-1);
      var MaCellule: variant;
      begin
        MaCellule := Mafeuille.getCellByPosition(x, y);
        MaCellule.Value := d;
        if couleurFond>=0 then
          MaCellule.CellBackColor := couleurfond;
    //    if Format>=0 then
    //      MaCellule.NumberFormat = Format;
      end;
     
    begin
      ConnectOpenoffice;
      if IsOpenOfficeConnected then begin
        Document := StarDesktop.LoadComponentFromURL('private:factory/scalc', '_blank', 0, dummyArray);
        if Document.SupportsService('com.sun.star.sheet.SpreadsheetDocument') then begin
     
          Document.title := WideString(UTF8TOAnsi(ComboBox1.Items[ComboBox1.ItemIndex]));
     
          // on stoppe l'affichage de la grid
          QueryEtat.DisableControls;
          BM := QueryEtat.GetBookmark;
          QueryEtat.First;
     
          MonClasseur := Document.getSheets;
          MaFeuille := MonClasseur.GetByName('Feuille1');
     
          for x := 0 to QueryEtat.FieldDefs.Count-1 do
            DansLaCase(x, 0, QueryEtat.FieldDefs.Items[x].DisplayName,$c0c0c0);
     
          x := 0;
          y := 1;
          while not QueryEtat.EOF do begin
            for x := 0 to QueryEtat.FieldCount-1 do
              DansLaCase(x, y, QueryEtat.Fields[x].AsString);
            QueryEtat.Next;
            Inc(y);
          end;
          QueryEtat.GotoBookmark(BM);
          QueryEtat.FreeBookmark(BM);
          QueryEtat.EnableControls;
     
        end else
          Form_Main.SetErrorMessage(7, 'Erreur, le type de fichier créé n''est pas celui demandé !', true);
        DisconnectOpenOffice;
      end else Form_Main.SetErrorMessage(6, 'Impossible de se connecter à OpenOffice', true);
    end;
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 166
    Points : 41 348
    Points
    41 348
    Billets dans le blog
    63
    Par défaut
    Après essai , je me suis fait avoir a d'autres endroits

    Sachant (contrairement à la plupart de tes lecteurs) qu'il s'agit d'une transposition d'un programme Delphi 7 vers Lazarus .

    Dans mon cas cela m'a d'abord planté sur le nom de fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OO_FileName:='private:factory/scalc';
    OO_Doc := OO_Desktop.LoadComponentFromURL(OO_FileName,
                                              '_blank',
                                               0,
                                              properties);
    OO_FileName était déclaré string -> erreur
    OO_FileName : WideString

    ensuite , j'avais dans mon programme Delphi une formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vCell.setFormula(format('=G%d*H%d',[n+1,n+1]));
    bonjour les "chinoiseries" , ayant eu le problème précédent , le "contournement" était évident :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Formule : WideString;
    .....
          Formule:=format('=G%d*H%d',[n+1,n+1]);
          vCell.setFormula(Formule);
    obtenant juste un avertissement
    unit1.pas(107,16) Warning: Implicit string type conversion from "AnsiString" to "WideString"
    Mais nickel , mes transferts se sont effectués .

    Par contre , je ne comprends pas l'objectif de
    Code ton code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       MesColonnes := Mafeuille.GetColumns;
       MaColonne := MesColonnes.GetByIndex(1);
    cependant , je l'ai mis dans mon code test sans obtenir d'erreur à l'exécution

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

Discussions similaires

  1. Export table/requête vers open office calc
    Par lineaire dans le forum Access
    Réponses: 1
    Dernier message: 13/11/2007, 13h26
  2. conversion excel vers open office
    Par djedje37et28 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2007, 14h29
  3. Migrer macro excel vers open office (VB vers Ooo) comment faire?
    Par cyberdevelopment dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/02/2007, 21h04
  4. access vers open office
    Par joker vb dans le forum Access
    Réponses: 7
    Dernier message: 04/11/2006, 21h59
  5. conversion d'une application vers open office
    Par bahhak dans le forum Access
    Réponses: 4
    Dernier message: 30/05/2006, 20h22

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