Mailmerge using OpenOffice

I'm currently trying to execute mailmerge using C # and OpenOffice.

I have a destanatary list in my db. I would like this to be possible:

  • the user edits the OO document, places fields such as "name", "address", "city", and some standard text (for example: "Hello Name, how are you?",
  • edit style etc.
  • then go to my application, click "Send to all users in the database."

Then the program enumerates all the users, and for each user the mailbox fields in the OO document are replaced with database data, we send them by mail / print / independently.

Problem: I cannot find a way in C # to replace the mailbox fields in an OO document with DB data, because I cannot find the Property / Method to process these fields.

Please help me with the annual bonus, it depends on it! (So ​​in the original)

Only the pointer I found is that it seems to me that I need a UNO library, but it does not seem to exist in C #.

+3
source share
1 answer

General help on using C # with OpenOffice:

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

With OO 3.0, you will need to reference the cli _ * libraries. dll, they will be placed in the GAC when installing OO.

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");
 }

:

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;
 }

, , XTextDocument .

. OpenOffice.org.

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

,

+4

Source: https://habr.com/ru/post/1713245/


All Articles