其他分享
首页 > 其他分享> > 使用OpenOffice Mailmerge

使用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