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