使用OpenOffice Mailmerge
作者:互联网
我目前正在尝试使用C#和OpenOffice进行邮件合并.
我的数据库中有一份债务清单.我希望这是可能的:
>用户编辑OO文档,放入
诸如“名称”,“地址”,“城市”之类的字段
和一些标准文字(例如:“您好
请问你好吗?”,
>编辑样式等,
>然后转到我的应用程序,继续
“发送给数据库中的所有用户”.
然后,该程序遍历所有用户,并且对于每个用户,用DB数据替换OO文档中的邮件合并字段,然后通过邮件/打印/以任何方式发送.
问题:在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 here.
另请参见OpenOffice.org Developer’s guide.
更新.
一个有用的链接:http://blog.nkadesign.com/2008/net-working-with-openoffice-3/
希望这可以帮助
标签:openoffice-org,mailmerge,c,net 来源: https://codeday.me/bug/20191107/2003384.html