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 :

Builder, OpenOffice et OLE


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut Builder, OpenOffice et OLE
    Bonjour à tous.

    Pour une de mes magnifiques applications, je dois pouvoir accéder en écriture à des fichiers texte (peut-être par la suite à des fichiers de type tableau).
    J'ai donc décidé de me pencher sur OLE avec Word. Avec l'aide de la FAQ et du forum, je n'ai eu aucun problème pour faire ce que je désirais pour le moment, c'est à dire :
    -Ouvrir un fichier existant
    -Modifier le texte d'un fichier existant à certains endroits (signet)
    -Ajouter une image à certains endroit (signet)
    -Fermer un fichier en le sauvegardant

    Maintenant (après avoir posé le décor de mes aventures codesques), j'aimerais pouvoir faire la même chose avec OpenOffice.
    En me basant sur la FAQ Delphi et sur certains posts de Blondelle, j'arrive à ouvrir OpenOffice avec un document vierge et à le ferme mais je n'arrive pas à ouvrir un document existant

    Voici mon code :
    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
     
    try
     {
      vOOoOpenOffice = CreateOleObject("com.sun.star.ServiceManager");
     }
     catch (...)
     {
      // si on passe ici c'est qu'il y a une erreur
     }
     if (VarType(vOOoOpenOffice) == varDispatch)
            vOOoDesktop = vOOoOpenOffice.OleFunction("createInstance", "com.sun.star.frame.Desktop");
     int Bounds[2] = {0,-1};
     vOOoLoadParams = VarArrayCreate(Bounds, 1, varVariant);
     
     //ouverture fichier existant
     AnsiString FileName = "file:///";
     FileName += ExtractFilePath(Application->ExeName);
     FileName += "test.odt";
     FileName = StringReplace(FileName,"\\","/",TReplaceFlags()<< rfReplaceAll << rfIgnoreCase);
     
     vOOoDocument = vOOoDesktop.OleFunction("LoadComponentFromURL",FileName,"_blank",0,vOOoLoadParams);
    A l'exécution, j'ai droit à une magnifique erreur Type de variable incorrect.
    Si quelqu'un a une solution, je suis preneur

    J'aimerais également trouver les méthodes pour insérer du texte et une image et aller à un signet.

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut bakaneko:
    Je vois que tu a decide d'utiliser OleOpenOffice je vais pouvoir t'aider pour quelques trucs.
    pour l'ouverture d'un fichier existant sous Calc le chemin doit etre du genre
    // FilePath = "file://localhost/C:/essai.sxc" -- pour un fichier Calc
    ou
    // FilePath = "file:///C:/essai.sxc" -- pour un fichier Calc
    Pour autre chose que Calc il faut verifier l'extention, bon courage

  3. #3
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Merci pour le coup de main
    Le problème que je rencontre, c'est que j'ai l'air d'avoir la bonne valeur dans ma variable FileName :
    file:///D:/Ressources/Sources/Divers/Test Word/test.odt
    ou
    file://localhost/D:/Ressources/Sources/Divers/Test Word/test.odt

    Nb : je suis sous Oo 2.2 d'où les extensions odt.

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    J'utilise aussi la version 2.2 il y a aussi une extension " .ott " on ne sais jamais

  5. #5
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Tu pourrais me filer un exemple d'un code que tu utilises pour ouvrir un fichier Oo existant?

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Citation Envoyé par blondelle
    J'utilise aussi la version 2.2 il y a aussi une extension " .ott " on ne sais jamais
    Une question bete a tu essaye de mettre le nom du fichier directement a la place de Filename.
    vOOoDocument = vOOoDesktop.OleFunction("LoadComponentFromURL","file:///D:/Ressources/Sources/Divers/Test Word/test.odt"
    ,"_blank",0,vOOoLoadParams);
    je ne me rappelle plus s'il faut ou non les " de debut et de fin de chaine

  7. #7
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    En passant directement le chemin du fichier, ça fonctionne

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

Discussions similaires

  1. Pilotage MsWord et OpenOffice via OLE
    Par jddev dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 30/03/2010, 11h44
  2. [OLE]BCB4 et OpenOffice
    Par Teaniel dans le forum C++Builder
    Réponses: 4
    Dernier message: 24/06/2008, 00h02
  3. BCB, OpenOffice, OLE et impression (problème propertyvalue)
    Par Shin_no_Noir dans le forum C++Builder
    Réponses: 7
    Dernier message: 10/07/2007, 17h17
  4. Piloter OLE Excel, VBE avec C++Builder
    Par Sunchaser dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 26/11/2006, 11h31
  5. Petit prob avec l'OLE EXCELL sous builder
    Par vladi dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/03/2005, 19h30

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