如何从MySQL数据库实时更新LibreOffice Calc单元?

时间:2015-06-24 20:49:36

标签: mysql libreoffice libreoffice-calc

我正在寻找一个程序来实时更新LibreOffice Calc中的单元格(或者至少在一些固定的时间点),从MySQL数据库中提取数据。理想情况下,当更新数据库中的值时,将更新电子表格中的相应单元格,使得calc中存在的任何公式或计算将继续对新值进行操作。到目前为止,我还没有找到一种以这种方式动态和以编程方式插入数据的方法。有可能吗?

1 个答案:

答案 0 :(得分:1)

LibreOffice组件Base是一个处理查询,表单和报告的数据库前端。虽然默认情况下它使用嵌入式版本的HyperSQL数据库来管理表,但它附带了驱动程序,可用于任何其他后端程序,包括MySQL。

我认为最简单的方法是创建一个以MySQL数据库作为后端的Base文件(注意Base只能查看来自MySQL的表和视图 - 它不会导入查询;虽然如果需要,可以在基本文件中保存查询)。确保“注册”基础文件,以便LibreOffice的其余部分可以“看到”它。一旦文件被注册,任何打开的LibreOffice组件都可以从MySQL访问数据(基础文件可以关闭)。

现在您可以将任何表或视图(来自MySQL组件)或查询(来自Base文件)导入Calc:[Tutorial] Using registered datasources in Calc

刷新导入的数据可以通过API调用完成。以下是StarBasic代码中的示例:

Sub refresh_DBRanges
    Dim oDBRangesEnum
    Dim oNext

    oDBRangesEnum = thisComponent.DatabaseRanges.createEnumeration()
    while oDBRangesEnum.hasMoreElements()
        oNext = oDBRangesEnum.nextElement()
        oNext.refresh()
    wend

End Sub

请注意,在“注册数据源”教程的第二篇文章中,它提供了API调用以在刷新计时器上设置导入范围。