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 :

Utilisation de Libre Office [OLE]


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Utilisation de Libre Office
    Bonjour,

    j'ai besoin de remplacer un lien OLE qui interagie avec des fichiers WORD et XLS
    Je voudrait utilisé la suite libreOffice pour
    - ouverture de fichier Calc
    - remplissage
    - sauvegarder le fichier
    - ...

    mais sur le forum je ne trouve dans la FAQ (C++ et Delphi) que des accès a Open Office

    Avez vous des tuto, faq, ou exemples de code C++ builder qui utilise ce lien OLE vers Libre Office ?

    J'ai tester le code de la FAQ de OpenOffice pour ouvrir Calc et cela ne fonctionne pas
    la connexion se fait bien via le CreateOleObject("com.sun.star.ServiceManager");
    mais après j'ai une erreur sur la suite avec l'erreur "Type de Variable incorrect"


    Merci d'avance pour votre aide

    David

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    avant de commencer un petit coup d'œil ici https://api.libreoffice.org/
    il semblerait que LibreOffice soit assez proche de OpenOffice

    cet article devrait également t'intéressé https://blogs.embarcadero.com/profes...e-libreoffice/

    et une librairie en version libre (GPL) https://sourceforge.net/projects/oo-automation/

    le SDK https://api.libreoffice.org/docs/idl/ref/index.html

    bonne lecture et bon courage
    ou alors
    un petit bout de code à titre d'exemple
    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
     
     
    //---------------------------------------------------------------------------
     
    #ifndef Unit124H
    #define Unit124H
    //---------------------------------------------------------------------------
    #include <System.Classes.hpp>
    #include <Vcl.Controls.hpp>
    #include <Vcl.StdCtrls.hpp>
    #include <Vcl.Forms.hpp>
    //---------------------------------------------------------------------------
    // le H
     
    class TForm124 : public TForm
    {
    __published:	// Composants gérés par l'EDI
    	TButton *Button1;
    	TButton *Button2;
    	void __fastcall Button1Click(TObject *Sender);
    	void __fastcall Button2Click(TObject *Sender);
    private:	// Déclarations utilisateur
     Variant vOOoOpenOffice, vOOoDocument, vOOoDesktop, vOOoLoadParams;
      WideString Param1;
    public:		// Déclarations utilisateur
    	__fastcall TForm124(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm124 *Form124;
    //---------------------------------------------------------------------------
     
     
    // le cpp
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit124.h"
    #include"ComObj.hpp"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm124 *Form124;
    //---------------------------------------------------------------------------
    __fastcall TForm124::TForm124(TComponent* Owner)
    	: TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm124::Button1Click(TObject *Sender)   // Ouverture de Calc
    {
       bool vOOoDocumentExist;
     
    try
    {
    	vOOoOpenOffice = Unassigned();
    	vOOoOpenOffice = CreateOleObject(L"com.sun.star.ServiceManager");
    	vOOoDesktop = vOOoOpenOffice.OleFunction(L"createInstance",WideString(L"com.sun.star.frame.Desktop"));
    }
    catch (...)
    {
    	// si on passe ici c'est qu'il y a une erreur qu'il faudra traiter
    }
    int Bounds[2] = {0,-1};
    vOOoLoadParams = VarArrayCreate(Bounds, 1, varVariant);
    vOOoDocument = vOOoDesktop.OleFunction(L"LoadComponentFromURL", WideString(L"private:factory/scalc"), WideString(L"_blank"), 0, vOOoLoadParams);
    vOOoDocumentExist = !(VarIsEmpty(vOOoOpenOffice) || VarIsNull(vOOoOpenOffice)); // false
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm124::Button2Click(TObject *Sender)  // Fermeture de Calc
    {
     
    	if(VarType(vOOoDocument) == varDispatch)
    	{
    	 vOOoDocument.OleFunction(L"dispose");
    	 vOOoOpenOffice = Unassigned();
    	}
     
    }
    //---------------------------------------------------------------------------
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci ca fonctionne avec tes exemple de code
    mon problème pour info par rapport a ton code vient que tu forces les type et moi je ne le faisait pas

    vOOoDesktop = vOOoOpenOffice.OleFunction(L"createInstance",WideString(L"com.sun.star.frame.Desktop"));

    je passe le point en résolu

    encore merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/05/2020, 11h41
  2. Utilisation du compagnon office
    Par benjisan dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/10/2007, 15h53
  3. utilisation de open office
    Par shaftJackson dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 11/12/2006, 15h46
  4. Memoire utilise et libre
    Par suckthewindow dans le forum Administration système
    Réponses: 2
    Dernier message: 11/05/2006, 17h14
  5. Réponses: 8
    Dernier message: 17/12/2004, 15h58

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