当前位置:  开发笔记 > 编程语言 > 正文

如何在OpenOffice中进行简单的邮件合并

如何解决《如何在OpenOffice中进行简单的邮件合并》经验,为你挑选了1个好方法。

我需要在OpenOffice中使用C++,VBScript,VB.Net或C#通过OLE或本机API进行简单的邮件合并.有没有好的例子?



1> 1800 INFORMA..:

我没有想出一个我真的很满意的解决方案,但这里有一些注意事项:

问:用于邮件合并的OO API是什么?

A. http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html

问:有哪些支持团体?

A. http://user.services.openoffice.org/en/forum/viewforum.php?f=20

问:示例代码?

A. http://user.services.openoffice.org/en/forum/viewtopic.php?f=20&t=946&p=3778&hilit=mail+merge#p3778

http://user.services.openoffice.org/en/forum/viewtopic.php?f=20&t=8088&p=38017&hilit=mail+merge#p38017

问:还有更多例子吗?

A. file:/// C:/Program%20Files/OpenOffice.org_2.4_SDK/examples/examples.html(附带SDK)

http://www.oooforum.org/forum/viewtopic.phtml?p=94970

问:如何构建示例?

A.例如,对于WriterDemo(C:\ Program Files\OpenOffice.org_2.4_SDK\examples\CLI\VB.NET\WriterDemo)

    添加对此处所有内容的引用:C:\ Program Files\OpenOffice.org 2.4\program\assembly

    那就是cli_basetypes,cli_cppuhelper,cli_types,cli_ure

问:OO是否使用相同的单独数据/文档文件进行邮件合并?

答:它允许包括csv文件在内的一系列数据源

问:OO是否允许您合并到所有不同类型(传真,电子邮件,新文档打印机)?

答:您可以合并到新文档,打印和发送电子邮件

问:你能添加自定义字段吗?

答:是的

问:如何在VB.Net中创建新文档?

一个.

        Dim xContext As XComponentContext

        xContext = Bootstrap.bootstrap()

        Dim xFactory As XMultiServiceFactory
        xFactory = DirectCast(xContext.getServiceManager(), _
            XMultiServiceFactory)

        'Create the Desktop
        Dim xDesktop As unoidl.com.sun.star.frame.XDesktop
        xDesktop = DirectCast(xFactory.createInstance("com.sun.star.frame.Desktop"), _
            unoidl.com.sun.star.frame.XDesktop)

        'Open a new empty writer document
        Dim xComponentLoader As unoidl.com.sun.star.frame.XComponentLoader
        xComponentLoader = DirectCast(xDesktop, unoidl.com.sun.star.frame.XComponentLoader)
        Dim arProps() As unoidl.com.sun.star.beans.PropertyValue = _
            New unoidl.com.sun.star.beans.PropertyValue() {}
        Dim xComponent As unoidl.com.sun.star.lang.XComponent
        xComponent = xComponentLoader.loadComponentFromURL( _
            "private:factory/swriter", "_blank", 0, arProps)
        Dim xTextDocument As unoidl.com.sun.star.text.XTextDocument
        xTextDocument = DirectCast(xComponent, unoidl.com.sun.star.text.XTextDocument)

问:如何保存文件?

一个.

        Dim storer As unoidl.com.sun.star.frame.XStorable = DirectCast(xTextDocument, unoidl.com.sun.star.frame.XStorable)
        arProps = New unoidl.com.sun.star.beans.PropertyValue() {}
        storer.storeToURL("file:///C:/Users/me/Desktop/OpenOffice Investigation/saved doc.odt", arProps)

问:如何打开文档?

一个.

        Dim xComponent As unoidl.com.sun.star.lang.XComponent
        xComponent = xComponentLoader.loadComponentFromURL( _
            "file:///C:/Users/me/Desktop/OpenOffice Investigation/saved doc.odt", "_blank", 0, arProps)

问:如何在VB.Net中启动邮件合并?

一个.

    不知道.此功能在API参考中,但在IDL中缺失.我们可能会略微搞砸.假设API正在运行,看起来运行合并非常简单.

    在VBScript中:

    设置objServiceManager = WScript.CreateObject("com.sun.star.ServiceManager")

    '现在使用从该文档中提取的设置设置新的MailMerge Set oMailMerge = objServiceManager.createInstance("com.sun.star.text.MailMerge")

    oMailMerge.DocumentURL = "文件:/// C:/用户/我/桌面/ OpenOffice的调查/邮件merged.odt" oMailMerge.DataSourceName = "增加了" oMailMerge.CommandType = 0' http://api.openoffice.org/文档/普通/ REF/COM /阳光/明星/文本/ MailMerge.html#的CommandType oMailMerge.Command = "增加了" oMailMerge.OutputType = 2' http://api.openoffice.org/docs/common/ref/com/ sun/star/text/MailMerge.html#OutputType oMailMerge.execute(Array())

    在VB.Net(Option Strict Off)

        Dim t_OOo As Type
        t_OOo = Type.GetTypeFromProgID("com.sun.star.ServiceManager")
        Dim objServiceManager As Object
        objServiceManager = System.Activator.CreateInstance(t_OOo)
    
        Dim oMailMerge As Object
        oMailMerge = t_OOo.InvokeMember("createInstance", _
                        BindingFlags.InvokeMethod, Nothing, _
                        objServiceManager, New [Object]() {"com.sun.star.text.MailMerge"})
    
        'Now set up a new MailMerge using the settings extracted from that doc
        oMailMerge.DocumentURL = "file:///C:/Users/me/Desktop/OpenOffice Investigation/mail merged.odt"
        oMailMerge.DataSourceName = "adds"
        oMailMerge.CommandType = 0 ' http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#CommandType
        oMailMerge.Command = "adds"
        oMailMerge.OutputType = 2 ' http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#OutputType
        oMailMerge.execute(New [Object]() {})
    

    同样的事情,但Option Strict On(不起作用)

        Dim t_OOo As Type
        t_OOo = Type.GetTypeFromProgID("com.sun.star.ServiceManager")
        Dim objServiceManager As Object
        objServiceManager = System.Activator.CreateInstance(t_OOo)
    
        Dim oMailMerge As Object
        oMailMerge = t_OOo.InvokeMember("createInstance", _
                        BindingFlags.InvokeMethod, Nothing, _
                        objServiceManager, New [Object]() {"com.sun.star.text.MailMerge"})
    
        'Now set up a new MailMerge using the settings extracted from that doc
        oMailMerge.GetType().InvokeMember("DocumentURL", BindingFlags.SetProperty, Nothing, oMailMerge, New [Object]() {"file:///C:/Users/me/Desktop/OpenOffice Investigation/mail merged.odt"})
        oMailMerge.GetType().InvokeMember("DataSourceName", BindingFlags.SetProperty, Nothing, oMailMerge, New [Object]() {"adds"})
        oMailMerge.GetType().InvokeMember("CommandType", BindingFlags.SetProperty, Nothing, oMailMerge, New [Object]() {0})
        oMailMerge.GetType().InvokeMember("Command", BindingFlags.SetProperty, Nothing, oMailMerge, New [Object]() {"adds"})
        oMailMerge.GetType().InvokeMember("OutputType", BindingFlags.SetProperty, Nothing, oMailMerge, New [Object]() {2})
        oMailMerge.GetType().InvokeMember("Execute", BindingFlags.InvokeMethod Or BindingFlags.IgnoreReturn, Nothing, oMailMerge, New [Object]() {}) ' this line fails with a type mismatch error
    

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有