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

2024-01-02

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


我还没有想出一个令我非常满意的解决方案,但这里有一些注意事项:

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

    A. http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html 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 http://user.services.openoffice.org/en/forum/viewforum.php?f=20

  • 问:示例代码?

    A.

  • 问:还有更多例子吗?

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

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

  • 问:如何构建示例?

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

    1. 添加对此处所有内容的引用:C:\Program Files\OpenOffice.org 2.4\program\ assembly
    2. 即cli_basetypes、cli_cppuhelper、cli_types、cli_ure
  • 问:OO 是否使用相同的单独数据/文档文件进行邮件合并?

    A. 它允许一系列数据源,包括 csv 文件

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

    A. 您可以合并到新文档、打印并通过电子邮件发送

  • 问:您可以添加自定义字段吗?

    A. Yes

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

    A.

            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)
    
  • 问:如何保存文档?

    A.

            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)
    
  • 问:如何打开文档?

    A.

            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 中启动邮件合并?

    A.

    1. 不知道。 API 参考中有此功能,但 IDL 中缺少此功能。我们可能有点搞砸了。假设 API 正常工作,那么运行合并看起来相当简单。

    2. 在 VBScript 中:

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

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

      oMailMerge.DocumentURL = "file:///C:/Users/me/Desktop/OpenOffice Investigation/mail merged.odt" oMailMerge.DataSourceName = "添加" oMailMerge.CommandType = 0 'http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#CommandType http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#CommandTypeoMailMerge.Command = "添加" oMailMerge.OutputType = 2 'http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#OutputType http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#OutputTypeoMailMerge.execute(Array())

    3. 在 VB.Net 中(选项严格关闭)

          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]() {})
      
    4. 同样的事情,但使用 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
      
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 OpenOffice 中进行简单的邮件合并 的相关文章

  • ASP Core HttpClientFactory 模式使用客户端证书

    任何人都知道在使用时如何使用客户端证书HttpClientFactory 在我发现的所有示例中 您需要提供HttpMessageHandler in the HttpClient构造函数 使用时不可用HttpClientFactory se
  • c# - 显示小数点到小数点后 6 位 [重复]

    这个问题在这里已经有答案了 可能的重复 具有 N 个小数位的 Double ToString https stackoverflow com questions 3059759 double tostring with n number o
  • 如果两个线程同时访问同一个 bool 变量会发生什么?

    我有一个跨平台 C 程序 其中使用 boost 库创建异步计时器 我有一个全局变量 bool receivedInput false 一个线程等待并处理输入 string argStr while 1 getline cin argStr
  • 在 C# 中轻松创建支持索引的属性

    在 C 中我发现索引属性 http msdn microsoft com en us library aa288464 VS 71 aspx非常有用 例如 var myObj new MyClass myObj 42 hello Conso
  • C++ 和序列化:有什么方法可以进行某种内省吗?

    我读过一些例子维基百科 http en wikipedia org wiki Type introspection C 2B 2B但我正在寻找一些现实生活中的例子 如何使用内省 为什么 它有助于编写干净的代码 以及代码本身 例如 有没有办法
  • 计算复杂数组的abs()值的最快方法

    我想计算 C 或 C 中复杂数组元素的绝对值 最简单的方法是 for int i 0 i lt N i b i cabs a i 但对于大向量来说 速度会很慢 有没有办法加快速度 例如使用并行化 语言可以是 C 或 C 鉴于所有循环迭代都是
  • 我要恢复我的记忆!我怎样才能真正处理一个控件?

    我正在制作一个应用程序 它创建大量的窗口控件 按钮和标签等 它们都是通过函数动态生成的 我遇到的问题是 当我删除控件并处置它们时 它们不会从内存中删除 void loadALoadOfStuff while tabControlToClea
  • 多维数组和指向指针的指针

    创建多维数组时char a 10 10 根据我的书 它说你必须使用类似于char a 10 将数组传递给函数 为什么必须这样指定长度 您不是只是将双指针传递给 with 并且该双指针不是已经指向分配的内存吗 那么为什么参数不能是char a
  • 函数指针上的未知类型 F TYPE

    include
  • EF Core 一对多关系列表返回 null

    我正在尝试学习如何在 EF Core 中正确利用 DbContext 我有一个团队课程 public class Team public int ID get set public string Name get set public bo
  • 如何使用 ProtoGen 从 proto 文件生成结构

    我们一直在使用 protobuf net ProtoGen 从 proto 文件生成 C cs 文件 我们希望代替类来生成结构 例如 DataContract public struct Entity1 ProtoMember 1 publ
  • 将授权标头添加到 Web 参考

    我正在尝试向客户端的网络服务发出请求 我不知道客户端的底层平台 我使用 添加 Web 引用 在 Visual Studio 2010 中使用了客户端的 WSDL 并生成了我的代理类 称为 ContactService 我现在需要将如下所示的
  • 为什么我无法调试动态加载的程序集?

    我正在开发一个 Web API 项目 该项目使用内部模拟框架 允许拦截和修改来自控制器的响应 它使用 MEF 加载包含某些先决条件匹配时执行的代码的程序集 我知道这是正常工作的 因为我可以在响应中看到模拟已被执行 但由于某种原因我无法调试动
  • 类型别名和不完整类型

    我可能已经超出了解决这个本应简单的问题的范围 我在这里开始这个问题 在编译时获取基类的类型 https stackoverflow com questions 17735852 getting type of a base class at
  • 生成范围 [min,max] 内的随机数 [重复]

    这个问题在这里已经有答案了 我正在使用 C 生成范围 min max 内的整数随机数 我在用 int random int int min int max return min rand max min 但我认为上面的代码适用于范围 min
  • 使用 _Alignas 进行结构成员对齐

    我想知道以下问题 是新的吗 Alignas结盟 C11 中的说明符适用于结构成员吗 我一直假设这么多 但彻底阅读了 N1570 公开草案似乎表明对齐说明符不能 出现在一个说明符限定符列表 这就是我所期望的 如果得到支持的话 我已经读过几遍语
  • #define 内存地址声明

    这个 define 语句有什么作用 它用于定义内存地址 但我不明白 uint32 t 部分 define GPxDAT uint32 t 0x6FC0 通常用于访问映射到地址空间的硬件寄存器 或者一些特定的内存地址 硬件寄存器应定义为vol
  • Gridview 错误:对 Bind 的调用格式不正确

    我有以下 gridview 代码
  • C# 3.0 中自动属性和公共字段的区别

    我无法理解为什么 C 3 0 中存在自动实现的属性语言功能 当你说的时候有什么区别 public string FirstName than public string FirstName get set 因为它们在生成的 IL 代码 和机
  • 如何使用 Ioc Unity 注入依赖属性

    我有以下课程 public interface IServiceA string MethodA1 public interface IServiceB string MethodB1 public class ServiceA IServ

随机推荐

  • 最新 Chrome/V8 版本中的对象描述符 getter/setter 性能

    Given var obj var a 1 obj a 1 obj aGetter function return a obj aSetter function val a val Object defineProperty obj a e
  • Android 视频视图在视频播放后创建黑屏

    我正在使用 Android 的 VideoView 来播放本地存储的 mp4 视频 我的应用程序是一个混合应用程序 即基于 webview 的应用程序 我使用本机代码来播放视频 视频在与网络视图相同的 Activity 中播放 我仅在 An
  • 来自另一个 HTML 文件的 Bootstrap 弹出窗口数据

    我希望它从 html 文件 如果您愿意的话 也可以是模板 中检索数据 而不是对数据进行硬编码 我怎样才能做到这一点 假设我有另一个 html 文件 其中包含 h1 and a 弹出窗口应该从中获取数据 弹出窗口的标题 正文 h1
  • 为什么我的输出是空白图像?

    这是我编写的一些用于显示图像幅度谱的代码 orig imdata imread Original Image png spec orig fft2 double orig imdata spec orig2 abs spec orig sp
  • 如何调整图像大小以适应不同的响应视图?

    我创建了一个网站nuxt js https nuxtjs org and 引导程序 https getbootstrap com 对于响应式视图 我需要创建不同的图像尺寸 Nuxt js 无法调整图像大小 你怎么做到这一点 现在我有了解决方
  • Soundcloud API SC.stream(曲目未加载)

    我从 soundcloud API 流式传输音乐 有时当我调用 SC stream 时 曲目不会流式传输 并且出现错误 GET http api soundcloud com tracks 80608808 stream client id
  • PHP 使用 POST 数据重定向

    我对这个话题做了一些研究 有一些专家说这不是possible https stackoverflow com questions 3045097 php redirect and send data via post 所以我想寻求替代解决方
  • 带参数启动程序

    如何编写一个非常简单的程序 使用命令行导航到用户的 Program Files 目录中的程序 然后启动 exe带参数 例如 C etc Program Files ProgramFolder Program exe C etc deskto
  • junit 的 Ant 目标

    我有 Suite java 文件 public class EshopServiceTestSuite extends TestSuite public static Test suite TestSuite suite new TestS
  • 使用 dask read_parquet 方法进行过滤会产生不需要的结果

    我正在尝试使用读取镶木地板文件dask read parquet方法和filters夸格 但有时它不会根据给定条件进行过滤 例子 创建并保存数据框dates column import pandas as pd import numpy a
  • Node.js 并发

    我是 Node js 的新手 我正在测试 socket io 的实时消息传递 我喜欢它并且想使用它 我有个问题 Node js 服务器可以运行多少并发 我们的程序大概会有100个并发 所以 我对此很担心 我发现了另一个实时消息服务器 APE
  • 从 Spring Web MVC 控制器返回带有查询参数的视图字符串?

    这是我想要的效果 但我无法弄清楚语法 RequestMapping method RequestMethod GET params param1 param2 produces text html public String createF
  • 错误 1111 (HY000):组功能使用无效

    给定一个具有以下属性的人员表 ec 姓名 代码 出生日期 工资 列出收入高于平均工资的员工 我的解决方案 select from staff where salary gt avg salary 这有什么问题吗 聚合可能不会出现在WHERE
  • 我可以从正则表达式创建列表吗?

    我正在制作一个爬虫 用户可以指定正则表达式字符串来下载数据 当用户输入表单为 http xxx abc x z image 9 10 11 png 我想下载这些 http xxx abcx image9 png http xxx abcy
  • CocoaPods 安装/搜索 pod 时出错

    我正在尝试在我的项目中使用一些 Pod 但终端结果是 pod install Analyzing dependencies Unable to find a specification for Mantle 因此 我尝试搜索该 Pod 或其
  • React Native:未找到哈希字符串“android-28”的目标

    当尝试从命令行构建 React Native android 应用程序时 我遇到了以下问题 它位于 Ubuntu Server 上 因此没有 Android Studio GUI 我有android 28安装在错误指出的文件夹中 ANDRO
  • 未初始化的常量 Active Scaffold Rails 2.3.5

    我将 Rails 应用程序从 2 0 2 更新到 2 3 5 我使用主动支架作为管理部分 我没有更改代码 但更新出现了问题 我有一个控制器 admin user controller 来管理用户 这是控制器的代码 class Admin U
  • XML 文件的长度

    我有一个大小为 31 GB 的 XML 文件 我需要找到该文件中的总行数 我知道命令wc l会给我同样的 但是执行此操作花费的时间太长 有没有更快的机制来查找大文件中的行数 31 gigs 是一个非常大的文本文件 我打赌它会压缩到大约 1
  • 输入数字字段时移动浏览器上“输入/下一个”键的行为

    我这里有一行代码 不涉及表单
  • 如何在 OpenOffice 中进行简单的邮件合并

    我需要使用 C VBScript VB Net 或 C 通过 OLE 或本机 API 在 OpenOffice 中进行简单的邮件合并 有什么好的例子吗 我还没有想出一个令我非常满意的解决方案 但这里有一些注意事项 问 什么是用于邮件合并的