Domanda

Al momento sto cercando di fare un mailmerge, utilizzando C # e OpenOffice.

Ho una lista di destanatary nel mio DB. Vorrei che ciò sia possibile:

  • l'utente modifica un documento OO, messo campi come "nome" "Adresse" "città" e un po 'di testo standard (ad esempio: "Ciao Nome Come stai?",
  • modificare lo stile, ecc ecc,
  • poi vai a mia domanda, Clic sulla "Invia a tutti gli utenti nel DB".

Poi il programma di loop attraverso tutti gli utenti, e per ogni utente sostituire i campi MailMerge nel documento OO con dati DB di, inviarlo per posta / print / qualunque cosa.

Problema: non riesco a trovare alcun modo, in C #, per sostituire i campi MailMerge nel documento OO con dati DB di, perché non riesco a trovare ciò Proprietà / Metodo gestire questi campi.

Vi prego di aiutare bonus annuale dipende da questo! (Sic)

puntatore Solo che ho trovato era che sembra avrò bisogno della Biblioteca ONU, ma sembra che non esiste in C #.

È stato utile?

Soluzione

aiuto generali sull'utilizzo di C # con OpenOffice:

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

Con OO 3.0 è necessario fare riferimento CLI _ *. Librerie DLL, sono adibiti ad GAC quando è installato OO.

Un codice di esempio per inizializzare la connessione 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");
 }

Caricamento documento:

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;

dove

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

Per saperne di più su cosa si può fare ci XTextDocument qui .

Si veda anche OpenOffice.org Guida per gli sviluppatori .

UPDATE . Un collegamento più utile:
http: //blog.nkadesign .com / 2008 / net-working-con-openoffice-3 /

Spero che questo aiuti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top