Mailmerge使用OpenOffice

我目前正在尝试使用C#和OpenOffice进行mailmerge。

我的数据库中有一份destanatary列表。 我希望这是可能的:

  • 用户编辑OO文档,放置“name”“adresse”“city”等字段和一些标准文本(例如:“Hello Name你好吗?”,
  • 编辑风格等等,
  • 然后转到我的应用程序,clic“发送给DB中的所有用户”。

然后程序循环遍历所有用户,并为每个用户用DB数据替换OO文档中的mailmerge字段,通过邮件/打印/发送它。

问题:我在C#中找不到用DB数据替换OO文档中的mailmerge字段的方法,因为我找不到属性/方法处理这些字段的方法。

请年度奖金取决于它帮助我! (原文如此)

只有我发现的指针是我似乎需要UNO库,但它似乎在C#中不存在。

有关在OpenOffice中使用C#的一般帮助:

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

使用OO 3.0,您需要引用cli _ * .dll库,在安装OO时将它们放到GAC中。

初始化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/

希望这可以帮助