Question

J'essaie actuellement de faire un mailmerge, en utilisant C # et OpenOffice.

J'ai une liste de destanatary dans mon DB. Je voudrais que cela soit possible:

  • l'utilisateur modifier un document OO, mis champs comme « nom » « adresse » « ville » et un texte standard (par exemple: « Bonjour Nom Comment êtes-vous? »,
  • modifier le style, etc etc,
  • puis aller à ma demande, cliquez sur "Envoyer à tous les utilisateurs dans DB".

Ensuite, le programme boucle à travers tous les utilisateurs, et pour chaque utilisateur remplacer les champs de MailMerge dans le document OO avec les données DB de, envoyer par courrier / impression / whatever.

Problème: Je ne peux trouver aucune façon, en C #, pour remplacer les champs de MailMerge dans le document OO avec des données DB de, parce que je ne peux pas trouver ce que la propriété / méthode gérer ces champs.

S'il vous plaît me aider en prime annuelle dépend! (Sic)

Seuls les pointeurs que j'ai trouvé qu'il semble que je vais avoir besoin de la Bibliothèque de l'ONU, mais il semble qu'il n'existe pas en C #.

Était-ce utile?

La solution

Aide générale sur l'utilisation de C # avec OpenOffice:

http://www.oooforum.org/forum/viewtopic.phtml ? p = 151606 http://opendocument4all.com/content/view/68/47/

Avec OO 3.0, vous aurez besoin de faire référence à cli _ *. Dll bibliothèques, ils sont mis à GAC lorsque OO est installé.

Un exemple de code pour initialiser la connexion OO:

 private static XMultiServiceFactory _multiServiceFactory;
 private static XComponentLoader _componentLoader;
 private static XFileIdentifierConverter _urlConverter;

 private static void Initialize()
 {
     XComponentContext localContext = uno.util.Bootstrap.bootstrap();
    _multiServiceFactory = (XMultiServiceFactory)localContext.getServiceManager();
    _componentLoader = (XComponentLoader)_multiServiceFactory.createInstance("com.sun.star.frame.Desktop");
    _urlConverter = (XFileIdentifierConverter)_multiServiceFactory.createInstance("com.sun.star.ucb.FileContentProvider");
 }

Chargement du document:

string url = _urlConverter.getFileURLFromSystemPath(Path.GetPathRoot(path), path);
XComponent xComponent = _componentLoader.loadComponentFromURL(url, "_blank", 0, new PropertyValue[] { MakePropertyValue("Hidden", new uno.Any(true))});
XTextDocument doc = (XTextDocument)xComponent;

 private static PropertyValue MakePropertyValue(string cName, Any uValue)
 {     
    PropertyValue oPropertyValue = new PropertyValue();
    if (!string.IsNullOrEmpty(cName))
       oPropertyValue.Name = cName;
    oPropertyValue.Value = uValue;
    return oPropertyValue;
 }

En savoir plus sur ce que vous pouvez faire, nous XTextDocument OpenOffice.org Guide du développeur .

UPDATE . Un lien plus utile:
http: //blog.nkadesign .com / 2008 / net-travail-avec-openoffice-3 /

Hope this helps

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top