使用 .net 与 Libre Office 进行邮件合并

马尤尔巴里

我有以下代码块,它非常适合 OpenOffice SDK 来自动化邮件合并功能。

    Public Function runQueryOnDataSource(ByVal nameOfdDtaource As String, ByVal query As String) As Boolean
    strLog = strLog + vbCrLf + Now.ToString() + ": runQueryOnDataSource nameOfdDtaource:" + nameOfdDtaource + ",query:" + query + "-Started"
    Dim oDB As Object, oBase As Object
    Dim oStatement As Object
    Dim rSQL As String
    Dim oRequete As Object
    Dim oServiceManager As Object, CreateUnoService As Object
    Try
        'Creation instance Open office
        oServiceManager = CreateObject("com.sun.star.ServiceManager")
        CreateUnoService = oServiceManager.createInstance("com.sun.star.sdb.DatabaseContext")
        mxMSFactory = (uno.util.Bootstrap.bootstrap()).getServiceManager()
        oDB = CreateUnoService.getByName(nameOfdDtaource) 'oDB=XDataSource
        'Connection
        oBase = oDB.getConnection("", "")   'oBase=XConnection
        oStatement = oBase.createStatement  'XStatement
        'rSQL = "SELECT * FROM ""26_MailMergeResult_DEMO"
        rSQL = query
        oRequete = oStatement.execute(rSQL)
        Return True
    Catch ex As Exception
        strLog = strLog + vbCrLf + Now.ToString() + ": Exception" + ex.ToString()
        Throw ex
    Finally
        oDB = Nothing
        oBase.Close()
        oBase.Dispose()
    End Try
    strLog = strLog + vbCrLf + Now.ToString() + ": runQueryOnDataSource-Finished"
    Return True
End Function

上面的代码用于将数据插入到已经在 libre office 注册的 DataSource 中。但是现在当我尝试使用它时,行oServiceManager = CreateObject("com.sun.star.ServiceManager")生成错误“错误创建 ActiveX 对象”。有没有人有想法,我该如何解决这个问题。

吉姆·K

这段代码看起来不正确,所以我很惊讶它曾经工作过。在其他示例中,该bootstrap()行总是先行。然后使用该服务管理器而不是单独的oServiceManager变量。

例如,请参阅https://www.openoffice.org/udk/common/man/spec/transparentofficecomponents.html 上的 Java 代码

编辑

你快到了。getByName()方法返回uno.Any,其中有一个叫做财产ValueDirectCast可以使用。

Dim oDB As XDataSource
Dim oBase As XConnection = Nothing
Dim xContext As XComponentContext = uno.util.Bootstrap.bootstrap()
Dim xMSFactory As XMultiServiceFactory = DirectCast(
    xContext.getServiceManager(), XMultiServiceFactory)
Dim xNameAccess As XNameAccess = DirectCast(
    xMSFactory.createInstance("com.sun.star.sdb.DatabaseContext"), XNameAccess)
oDB = DirectCast(xNameAccess.getByName("Bibliography").Value, XDataSource)
oBase = DirectCast(oDB.getConnection("", ""), XConnection)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用systemd启动Libre Office

来自分类Dev

.NET是否有任何Open Office或Libre Office SDK?

来自分类Dev

使用Libre Office Calc计算总薪水

来自分类Dev

从Mac Terminal使用Libre Office打开Powerpoint

来自分类Dev

如何在 Libre Office Writter 中使用格式 ABC 进行自动编号?

来自分类Dev

如何使用libre office writer准备流程图

来自分类Dev

如何在Libre Office Writier中使用虚拟键盘?

来自分类Dev

如何使用libre office writer准备流程图

来自分类Dev

在Libre Office中使用正则表达式查找“ *”

来自分类Dev

如何在 Libre Office Writier 中使用虚拟键盘?

来自分类Dev

从csv scientif数字表示形式导入不允许使用Libre Office Calc进行任何数学运算

来自分类Dev

Libre Office计算发票

来自分类Dev

Libre Office Calc 与 Excel

来自分类Dev

如何升级/维护Libre Office

来自分类Dev

Libre Office显示奇怪的字符

来自分类Dev

HTML Input Droppable + Libre Office

来自分类Dev

Libre Office中的日期计算

来自分类Dev

如何删除libre office配置

来自分类Dev

如何升级/维护Libre Office

来自分类Dev

Libre Office中的日期计算

来自分类Dev

Libre Office中的图像褪色

来自分类Dev

Libre Office的最大单元数

来自分类Dev

如何删除libre office配置

来自分类Dev

Libre Office Writer显示狭窄

来自分类Dev

使用命令行使用Libre Office将xls转换为dbf

来自分类Dev

如何编译使用Libre Office编辑器创建的C程序文件?

来自分类Dev

如何从Libre Office Calc中获取数据并在bash脚本中使用它?

来自分类Dev

使用libre office时切换到下标或上标的键盘快捷方式是什么

来自分类Dev

(Libre Office / Base Database)始终尝试使用iODBC而不是Mac OSX 10.10上的unixODBC连接ODBC

Related 相关文章

热门标签

归档