Как я могу обновлять ячейки LibreOffice Calc в реальном времени из базы данных MySQL?

Я хочу написать программу для обновления ячеек в LibreOffice Calc в режиме реального времени (или, по крайней мере, с фиксированным тиком) с данными, извлеченными из базы данных MySQL. В идеале, когда значения в базе данных обновляются, соответствующие ячейки в электронной таблице должны быть обновлены таким образом, чтобы любые формулы или вычисления, существующие в calc, продолжали работать с новыми значениями. Пока мне еще предстоит найти способ динамически и программно вставлять данные таким образом. Является ли это возможным?


person Nate    schedule 24.06.2015    source источник


Ответы (1)


Компонент LibreOffice Base - это интерфейс базы данных, который обрабатывает запросы, формы и отчеты. Хотя по умолчанию он использует встроенную версию базы данных HyperSQL для управления таблицами, он поставляется с драйверами для любого количества других серверных программ, включая MySQL.

Я думаю, что самый простой способ приблизиться к этому - создать файл Base с вашей базой данных MySQL в качестве бэкэнда (обратите внимание, что Base сможет видеть только таблицы и представления из MySQL - он не будет импортировать запросы; хотя вы можете сохранить запросы в базовом файле, если хотите). Обязательно «зарегистрируйте» базовый файл, чтобы остальная часть LibreOffice могла его «увидеть». После регистрации файла любой открытый компонент LibreOffice может получить доступ к данным из MySQL (базовый файл можно закрыть).

Теперь вы можете импортировать любые таблицы или представления (из компонента MySQL) или запросы (из файла Base) в Calc: [Учебное пособие] Использование зарегистрированных источников данных в 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 для установки диапазонов импорта на таймере обновления.

person Lyrl    schedule 25.06.2015