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/
希望这可以帮助