OpenOffice中的邮件合并

3

我目前正在尝试使用C#和OpenOffice进行邮件合并。

我有一个收件人列表在我的数据库中。我希望能够实现以下功能:

  • 用户编辑OO文档,放置字段如“姓名”“地址”“城市”,以及一些标准文本(例如:“你好姓名,你好吗?”)
  • 编辑样式等等
  • 然后进入我的应用程序,单击“发送给所有用户在数据库中”。

然后程序循环遍历所有用户,对于每个用户,将OO文档中的邮件合并字段替换为数据库数据,通过电子邮件/打印/其他方式发送。

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

请帮帮我,我的年度奖金取决于它!(原话)

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

1个回答

5

关于使用C#与OpenOffice的一般帮助:

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/

希望这有所帮助。


谢谢您的回答,但是“where”之后的代码有什么用?关于C# / OpenOffice的文档真的很少:/ - Clement Herreman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接