2010-01-13 5 views
2

Je suis en train de programmer une fenêtre "Hello World" simple sur WinXP MSVC 2008.NET en utilisant OpenOffice 3.0 API et SDK."Hello World" en utilisant l'exemple de code OpenOffice 3

L'article est grand pour les débutants ... http://api.openoffice.org/docs/DevelopersGuide/OfficeDev/OfficeDev.xhtml#1_1_OpenOffice.org_Application_Environment

Qu'est-ce que le code pour « Bonjour tout le monde » ressembler?

+0

@ aiw33k: quelle langue doit-il être? JavaScript, Python, Java, C#, VB.NET, OOo de base? –

+0

C# serait parfait pour moi. Merci. – cpp11dev

Répondre

6

Configurez votre solution: http://blog.nkadesign.com/2008/net-working-with-openoffice-3/

exemple alors simple: (http://opendocument4all.com/content/view/68/47/)

using System; 
// Add all needed CLI namespaces to the current class. 
using unoidl.com.sun.star.lang; 
using unoidl.com.sun.star.uno; 
using unoidl.com.sun.star.bridge; 
using unoidl.com.sun.star.frame; 

namespace OOTutorial 
{ 
    class OpenOfficeApp 
    { 
     //Define a file name. Change this to an existing path! 
     private static string FileName = @"F:\odtfiles est.odt"; 

     [STAThread] 
     static void Main(string [] args) 
     { 
      //Call the bootstrap method to get a new ComponentContext 
      //object. If OpenOffice isn't already started this will 
      //start it and then return the ComponentContext. 
      unoidl.com.sun.star.uno.XComponentContext localContext =   
       uno.util.Bootstrap.bootstrap(); 

      //Get a new service manager of the MultiServiceFactory type 
      //we need this to get a desktop object and create new CLI 
      //objects. 
      unoidl.com.sun.star.lang.XMultiServiceFactory multiServiceFactory = 
       (unoidl.com.sun.star.lang.XMultiServiceFactory) 
       localContext.getServiceManager(); 

      //Create a new Desktop instance using our service manager 
      //Notice: We cast our desktop object to XComponent loader 
      //so that we could load or create new documents. 
      XComponentLoader componentLoader = 
       (XComponentLoader) 
       multiServiceFactory.createInstance( "com.sun.star.frame.Desktop"); 

      //Create a new blank writer document using our component 
      //loader object. 
      XComponent xComponent = componentLoader.loadComponentFromURL( 
       "private:factory/swriter", //a blank writer document 
       "_blank", 0,  //into a blank frame use no searchflag 
       //use no additional arguments. 
       new unoidl.com.sun.star.beans.PropertyValue[0]); 

      //Cast our component to a the XText interface 

      //and write some simple text into document.     
      ((unoidl.com.sun.star.text.XTextDocument)xComponent). 
       getText().setString("Hello I'm the first text!"); 

      //After we insert our text, we cast our component to XStorable 
      //to save it onto the harddisk 
      ((XStorable)xComponent).storeToURL( 
       //Convert the file path into a OpenOffice path 
       PathConverter(FileName), 
       //no additional arguments 
       new unoidl.com.sun.star.beans.PropertyValue[0]); 

      Console.WriteLine("Your first OpenOffice document is saved!"); 
      Console.ReadLine(); 
     } 

     /// 
     /// Convert into OO file format 
     /// 
     private static string PathConverter(string file) 
     { 
      try 
      { 
       file = file.Replace(@"\", "/"); 
       return "file:///"+file; 
      } 
      catch (System.Exception ex) 
      { 
       throw ex; 
      } 
     } 
    } 
} 
+0

Cela nécessite-t-il une installation existante d'OpenOffice sur le système? Appelle-t-il la fonction 'Bootstrap.bootsrap()' sert? –