Libreoffice basic: Программирование с помощью LibreOffice Basic
Содержание
Программирование LibreOffice Base. Часть 1 / Хабр
В opensource офисных пакетах OpenOffice, LibreOffice есть редко используемая и очень скупо документированная возможность — программирование, которая позволяет быстро разрабатывать приложения, аналогичные, например, приложениям Microsoft Access. Сегодня я сделаю небольшой обзор возможностей программирования OpenOffice, LibreOffice.
Вопрос: а зачем?
Я не буду сейчас влазить в исторические причины, т.к. у работников, причастных к автоматизации — это и руководители предприятий, и дистрибьюторы ERP-систем, и IT-службы внутри предприятия, и консалтинг — у всех свои причины (зачастую подкрепленные денежной выгодой) отстаивать именно свою точку зрения. Но я думаю, все согласятся с тем что в повседневной работе подразделений предприятий Excel и его бесплатный аналог Calc (из пакета OpenOffice, LibreOffice) используется очень широко. И уж если такое явление существует, то можно утверждать что это уже не случайность, а так сказать производственная необходимость, и уж точно не вина работников — а скорее недоработка автоматизаторов.
В пакетах OpenOffice, LibreOffice есть компонент для работы с базами данных — Base. Я пытался освоить работу с ним еще до OpenOffice, LibreOffice — во времена StarBase. Но все мои попытки упирались в полное отсутствие документации по разработке (программированию). На сегодня, документации по-прежнему мало, и, наверное, наиболее полезным ресурсом является книга большого энтузиаста программирования OpenOffice, LibreOffice — Andrew Pitonyak. Также была издана книга на русском языке, включающая главу 7. Язык OOo Basic — УДК 681.3.06 ББК 32.973.26-018.2 К59 Козодаев, Р. Ю. К59 OpenOffice.org 3. Полное руководство пользователя / Р. Ю. Козодаев, А. В. Маджугин / Под ред. Е. В. Ушаковой. — СПб.: БХВ-Петербург, 2010. — 704 с.: ил. + Дистрибутив (на CD-ROM) — (Библиотека ГНУ/Линуксцентра) ISBN 978-5-9775-0385-3
Поэтому в качестве распространения информации о возможностях программирования OpenOffice, LibreOffice с упором на компонент Base создано это сообщение.
Пакет LibreOffice сейчас актуален в версии 6. 2 которую можно получить на сайте разработчика.
Также пакет предустановлен на многих дистрибутивах Linux (иногда не предустановлен пакет Base, так как он сравнительно редко используется).
На этапе создания новой базы данных Base можно выбрать вариант работы со встроенной базой данных или присоединиться к серверу базы данных. То есть многопользовательская работа поддерживается. Для экспериментов можно выбрать любой из вариантов.
Редактор макросов открывается последовательным выбором пунктов меню Tools->Macros->Organize Macros->LibreOffice Basic.
Перед вами появится выбор место хранения макросов. Наиболее логичным будет хранить макросы в файле базы данных, т.к. их в этом случае можно будет распространять одним файлом.
Создадим самый простой макрос:
Sub Hello
MsgBox "Hello"
End Sub
Далее создадим форму
Forms->Create Form In Design View
. И добавим в конструкторе формы элемент кнопка. После создания кнопки распахнем палитру свойств кнопки, нажав правую кнопку мыши и далее последовательно выбрав
Control->Execute Action->Macro->Имя библиотеки->Hello
.
Сохранив форму вызываем ее на выполнение и наблюдаем работу макроса. Или не наблюдаем. Все дело в защите которая в связи с участившимися вредоносными макросами отключает их работу по умолчанию.
Если тем вызовет хоть какой-то интерес готов продолжить более конкретными темами.
Глава 13 – Работа с макросами в LibreOffice¶
Добавление макроса
Первый шаг в изучении программирования макросов, это найти и использовать существующие макросы. В этом разделе подразумевается, что у вас уже имеется макрос, который вы хотите использовать. Вы могли найти его в Интернете или в какой-нибудь книге. Рассмотрим пример 1. Чтобы записать этот макрос, вы должны предварительно создать библиотеку и модуль, и уже в модуле написать текст макроса, смотрите Организация макросов.
Пример 1: Простой макрос, который пишет “Hello, World”:
Sub HelloMacro Print "Hello, World" End Sub
Чтобы создать библиотеку, необходимо выполнить следующие шаги:
- Выберете пункты главного меню , чтобы открыть диалог работы с макросами Libreoffice Basic.
Диалог работы с макросами LibreOffice Basic
- Нажмите Управление, чтобы открыть диалог организатора макросов и выберите вкладку Библиотеки.
- Выберите в выпадающем списке Приложение/Документ пункт Мои макросы и диалоги.
Диалог организатора макросов LibreOffice Basic
- Нажмите Создать, чтобы открыть диалог создания новой библиотеки.
- Введите имя библиотеки, например, TestLibrary и нажмите OK.
- Выберите вкладку Модули.
- В списке модулей раскройте Мои макросы и выберите TestLibrary. Модуль с именем Module1 уже существует, он может содержать ваши макросы. Если необходимо, том можно нажать Создать, чтобы создать другой модуль в библиотеке.
- Выберите Module1 или новый модуль, который вы создали и нажмите Правка, чтобы открыть интегрированную среду разработки (IDE). Интегрированная среда разработки это текстовый редактор, включённый в LibreOffice, который позволяет создавать и редактировать макросы.
Интегрированная среда разработки макросов
- После создания нового модуля он содержит комментарий и пустой макрос, названный Main, который ничего не делает.
- Добавьте новый макрос или до
Sub Main
или послеEnd Sub
. В примере ниже приведен новый макрос, который был добавлен доSub Main
.
Пример 2: Module1
после добавления нового макроса:
REM ***** BASIC ***** Sub HelloMacro Print "Привет" End Sub Sub Main End Sub
- Нажмите на значок Компилировать на панели инструментов, чтобы откомпилировать макрос.
- Поставьте курсор в процедуру
HelloMacro
и нажмите на значок Выполнить BASIC на панели инструментов или нажмите клавишуF5
, чтобы выполнитьHelloMacro
в модуле. Откроется маленький диалог со словомПривет
. Если курсор не находится внутри процедурыSub
или функцииFunction
, откроется диалог выбора макроса для запуска.
- Нажмите OK, чтобы закрыть диалог.
- Чтобы выбрать и выполнить любой макрос в данном модуле, нажмите значок Выбрать макрос на стандартной панели инструментов или выберите .
- Выберите макрос и нажмите Выполнить.
Запись макросов
Если вы хотите многократно ввести одинаковую информацию, вы можете скопировать эту информацию после того, как она введена в первый раз, затем вставлять эту информацию в ваш документ каждый раз по мере необходимости. Однако, если вы скопировали в буфер обмена что-то ещё, содержимое буфера меняется. Это означает, что вы должны заново скопировать вашу повторяющуюся информацию. Чтобы обойти эту проблему, вы можете создать макрос, который в процессе выполнения вводит нужную вам информацию.
Примечание
Для некоторых типов многократно вводимой в документах информации более удобно создать файл автотекста. Описание работы с автотекстом смотрите в справочной системе и в главе Глава 3 – Использование Стилей и Шаблонов данного руководства.
- Убедитесь, что функция записи макросов активизирована, выбрав . Установите флажок Включить запись макросов. По умолчанию эта функция отключена, когда LibreOffice впервые установлен на ваш компьютер.
- Выберите из главного меню, чтобы запустить запись макроса. Появится маленький диалог, подтверждающий, что LibreOffice записывает ваши действия.
Диалог записи макроса
- Наберите желаемую информацию или выполните необходимые действия. Например, напечатайте ваше имя.
- Нажмите Завершить запись в маленьком диалоге, чтобы остановить запись, и появится диалог работы с макросами LibreOffice.
- Откройте библиотечный контейнер Мои макросы.
- Найдите библиотеку с именем
Standard
в Моих макросах. Обратите внимание, что каждый библиотечный контейнер содержит библиотекуStandard
. - Выберите библиотеку
Standard
и нажмите Создать модуль, чтобы создать новый модуль, содержащий макросы. Откроется диалог создания модуля.
Диалог создания модуля
- Задайте название для нового модуля, например, Recorded и нажмите OK, чтобы создать модуль. В диалоге работы с макросами теперь виден этот новый модуль в составе библиотеки
Standard
. - В поле Имя макроса напечатайте имя для макроса, который вы только что записали, например,
EnterMyName
. - Нажмите Записать, чтобы сохранить макрос и закрыть диалог работы с макросами.
- Если вы верно выполнили все шаги, описанные выше, библиотека
Standard
теперь содержит модульRecorded
, и этот модуль содержит макросEnterMyName
.
Примечание
Когда LibreOffice создаёт новый модуль, в этот модуль автоматически добавляется процедура с именем Main
.
Запуск макроса
- Выберите , чтобы открыть диалог выбора макроса.
- Например, выберите ваш только что созданный макрос
EnterMyName
и нажмите Выполнить. - Можно также вызвать из главного меню , чтобы открыть диалог работы с макросами, выбрать ваш макрос и нажать Выполнить.
Диалог выбора макроса
Просмотр и редактирование макросов
Чтобы просмотреть или отредактировать созданные вами макросы выполните:
- , чтобы открыть диалог работы с макросами.
- Выберите ваш новый макрос
EnterMyName
и нажмите Правка, чтобы открыть макрос в интегрированной среде разработки.
Макрос EnterMyName не так уж сложен, как может показаться. Изучение нескольких вещей существенно поможет в понимании макросов. Начнём сначала и посмотрим на самую первую строку примера.
Макрос EnterMyName
не так уж сложен, как может показаться. Изучение нескольких вещей существенно поможет в понимании макросов. Начнём сначала и посмотрим на самую первую строку примера.
Пример 3: Сгенерированный макрос EnterMyname
:
REM ***** BASIC ***** Sub Main End Sub sub EnterMyName rem ------------------------------------------------------------- rem define variables (определение переменных) dim document as object dim dispatcher as object rem ------------------------------------------------------------- rem get access to the document (получение доступа к документу) document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") rem ------------------------------------------------------------- dim args1(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "Text" args1(0).Value = "Иван Сидорович Петров" dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1()) end sub
Комментарии
Подробные комментарии являются необходимой частью программы. Без комментариев и сам программист зачастую забывает, что же он написал несколько недель (а может и месяцев или лет) тому назад.
Все комментарии в макросах начинаются с ключевого слова REM
. Весь текст строки после REM игнорируется компьютером при выполнении макроса. Можно также использовать символ одинарной кавычки ('
), чтобы начать комментарий.
Ключевые слова в LibreOffice Basic могут быть записаны в любом регистре, таким образом REM
, Rem
, и rem
могут начинать комментарий. Если вы используете символические константы, определяемые в программном интерфейсе приложения (Application Programming Interface, API), безопаснее считать, что имена чувствительны к регистру. Символические константы не описаны в данном руководстве, они не нужны, когда вы используете функцию записи макросов в LibreOffice.
Определение процедур
Отдельные макросы сохраняются в процедурах, которые начинаются с ключевого слова SUB
. Окончание процедуры обозначается END SUB
. Код модуля в примере 3 начинается с определения процедуры, названной Main, в которой нет ничего, и она ничего не делает. Следующая процедура, EnterMyName
, содержит сгенерированный код вашего макроса.
Примечание
Когда LibreOffice создаёт новый модуль, в этот модуль всегда автоматически добавляется процедура с именем Main
.
Существует много полезной информации, не вошедшей в данное руководство, однако знание о ней весьма интересно:
- Вы можете написать процедуры, которые используют некоторые “входные” величины, называемые аргументами. Однако, функция записи макросов не предоставляет возможности использовать аргументы в процедурах.
- Помимо процедур существуют также функции, которые могут “возвращать” значение. Функции определяются ключевым словом
FUNCTION
в начале. Однако, записанные макросы, – это всегда процедуры, а не функции.
Определение переменных
Вы можете записать информацию на листе бумаги и позднее воспользоваться этой информацией. Переменные, подобно листу бумаги, содержат информацию, которую можно изменять или читать. Ключевое слово Dim
используется для описания типа переменной и для задания размерности массивов. Оператор dim
в макросе EnterMyName
используется подобно подготовке листа бумаги для записи информации.
В макросе EnterMyName
переменные document и dispatcher определены с типом object (объект). Другие часто используемые типы переменных включают string (строка), integer (целое) и date (дата). Третья переменная с именем args1 – это массив значений свойств. Массивы это переменные, содержащие несколько величин, подобно тому, как в одной книге содержится несколько страниц. Величины в массивах обычно нумеруются начиная с нуля. Число в скобках задаёт максимальный номер, используемый для доступа к элементу массива. В данном примере в массиве содержится только одна величина, и она имеет номер ноль.
Как это работает
Разберёмся более подробно с кодом макроса EnterMyName
. Может быть вы и не поймёте всех тонкостей, но разбор каждой строки в коде позволит вам осознать то, как работают макросы.
Определение начала макроса:
Определение переменной:
Определение переменной:
Объект ThisComponent ссылается на текущий документ.
document = ThisComponent.CurrentController.Frame
CurrentController
– свойство, ссылающиеся на службу, которая управляет документом. Например, когда вы печатаете на клавиатуре, – это текущий процесс, который управляет вводом в документ того, что вы напечатали. CurrentController
затем отправляет изменения в блок данных документа.
Frame
– свойство службы, которое возвращает основной блок данных документа. Таким образом, переменная с именем document ссылается на блок данных документа, который получает команды диспетчера.
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Большинство задач в LibreOffice выполняется посредством диспетчеризации (отправки) команды (dispatching a command). LibreOffice включает службу DispatchHelper
, которая чаще всего применяется при использовании диспетчера в макросах. Метод CreateUnoService получает имя службы и пытается создать экземпляр этой службы. По завершении метода, переменная dispatcher содержит ссылку на службу DispatchHelper
.
dim args1(0) as new com.sun.star.beans.PropertyValue
Определяет массив свойств. Каждое свойство имеет имя и значение. Другими словами, это пара имя/значение. Созданный массив содержит одно свойства, доступное по номеру ноль.
args1(0).Name = "Text" args1(0).Value = "Иван Сидорович Петров"
Задаём для свойства имя “Text” и значение “Иван Сидорович Петров”, это значение и есть тот самый текст, который будет вставлен, когда макрос сработает.
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
Вот тут и случается чудо. Служба DispatchHelper
посылает блоку данных документа (ссылка на который сохранена в переменной document) команду .uno:InsertText
. Описание следующих двух аргументов выходят за рамки данного руководства. Последний аргумент – это массив свойств, используемый для выполнения команды InsertText
.
Последняя строка кода, конец процедуры.
Все вопросы по теме libreoffice-basic
UI выглядит как: Счет: Wessex Bank PLC Доход: 200 € Стоимость: Дата: 28.02.2021 Вывод должен быть список ниже в клетках: Дата: |. Счет: |. Доход: |. Стоимость: |.
28.02.2021 |. Wessex Bank PLC | 200 € | 28.02.2021 |. Еда |. — |. 175 € | Подсказка: я хотел бы иметь список 5-7 брон….
У меня есть базовая база данных LibreOffice с формой и элементом управления таблицей. Есть макрос, который получает данные для помещения в таблицу. Таблица не привязана к источнику данных и имеет 1 столбец «id». Я пробую следующий код, чтобы добавить строку в пустую таблицу:
oFormTasks = oCurrent….
Мне нужно что-то запрограммировать в LibreOffice Basic, но я никогда этого раньше не делал. У меня просто основа на python, так что для меня это действительно ново. Я не нашел свежей документации, поэтому читаю …….
У меня есть таблица макросов, которую я создал в Windows, которая захватывает путь к папке, в которой сейчас находится электронная таблица, а затем открывает папку внутри этого каталога.
Я использую команду shell («C:\Windows\explorer.exe»,1,FolderPath), где «FolderPath» — это строка, в которой указ….
Добавляем детали. У меня есть такая таблица:
B C D E F G H
Date Time Kwh $/KwCost Hours/MonthsCost/Kwh
2021-01-01 0:15 0.69 $0.00 0 months $0.15
2021-01-01 0:30 0.51 $0.00 0 11-12,1-5 $0.05
01/08/21 0:45 ….
Я пишу программу макросов в электронной таблице LibreOffice Calc. Этот макрос должен делать следующее (среди прочего):
открыть существующий текстовый документ ODT как шаблон искать и заменять некоторые строки новыми значениями сохраните копию как новый файл создать и открыть версию PDF
Возможно ли ….
Я новичок и использую в макросе LibreOffice команду оболочки:
Shell(Pathname, Windowstyle, Param, bSync)
Для активации некоторых сценариев bash. Читая блоги, я понимаю, что передача значений переменных односторонняя, сверху вниз. Есть ли способ вернуть к вызывающему макросу некоторые значения….
Я пытаюсь создать базовый макрос libreoffice, который позволяет копировать все содержимое файла в строку таблицы. Приведенный ниже код правильно работает с текстовыми файлами, такими как .ods или .txt, но имеет некоторые проблемы с файлами .pdf и .ods. В частности, происходит сбой в методе getText….
У меня есть функция из Функция доступа к диапазону ячеек (повторяется здесь):
public function CHECKBZRANGE(vCellRangeValues as variant) as integer
dim i as integer
dim vCellValue as variant
for each vCellValue in vCellRangeValues
msgbox vCellValue
i = i + 1
next
….
Установка: LibreOffice 7.0.0.3, Win10 2004 19041.450
Когда я запускаю этот код, я получаю сообщение об ошибке «Не установлена переменная объекта». В отладчике LibreOffice я правильно вижу двумерный массив со значениями. Я не могу получить доступ к отдельным значениям внутри массива. Что я делаю….
Я не могу понять (или найти пример), как выполнить следующую простую вещь в LibreOffice Calc 6.2:
У меня есть фигура для рисования (например, простой прямоугольник) на листе (назовите ее ShapeA) и форму текстового поля на другом листе (назовите ее TextboxB). Я хочу сделать следующее: когда я нажима….
Я создал форму базы данных с двумя комбинированными списками: Combo1 и Combo2.
Видимость Combo2 зависит от статуса Combo1: Combo1 установлен, Combo2 виден; Combo1 не отмечен, Combo2 скрыт.
Я ожидал найти что-то вроде Combo2.setVisible(Combo1.isVisible()), но был слишком оптимистом.
Это макрос, с к….
Я использую C ++ для управления LibreOffice / OpenOffice из другого приложения, но я думаю, вы можете мне помочь, если знаете и java-bridge. Итак, в основном я хочу загрузить документ (работает), установить текст ячейки (работает) и установить ячейку таблицы для горизонтального выравнивания по прав….
Я хочу получить текущий элемент в LibreOffice Impress, чтобы применить к нему изменения.
Например, я пытаюсь получить эту фигуру, чтобы изменить текст в ней с помощью макросов.
Я пытался найти информацию с помощью рентгеновского аппарата, но безуспешно…..
Простой запрос: у меня есть калькуляционные таблицы с несколькими таблицами данных, которые нужно отсортировать по значениям, которые я определил (этот UserDefIndex установлен)? Я надеюсь найти способ написать макрос, который будет выполнять такую сортировку для выделенных мною ячеек, в отличие о….
Какой самый простой способ дублировать диалог макроса в OpenOffice / LibreOffice Calc?
У меня уже есть один, созданный для конкретной задачи, но мне нужен другой, который немного отличается, и я не хочу создавать его с нуля. Я попытался отредактировать ODS как ZIP и продублировать ресурс диалога, н….
Я пытаюсь ознакомиться с использованием Macro и Uno API на базе LibreOffice, я попытался открыть свой файл .ODB с Uno Offeredatabasedocument (DOC здесь: https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1sdb_1_1OfficeDatabaseDocument.html#a3d0b1f053d53f5b196e4c19e55a519ae ), что….
Я пишу макрос для LibreOffice Calc на языке Basic в режиме совместимости с VBA. Он жалуется, когда я использую эту строку:
Const BASE = 3
Ошибка синтаксиса BASIC. Ожидается символ.
И цвет синтаксиса, кажется, указывает на то, что «BASE» — ключевое слово или зарезервированное слово. Другие кон….
Кажется, я не могу найти простого ответа на этот вопрос. У меня это успешно работает в Libreoffice Basic:
NamedRange = ThisComponent.NamedRanges.getByName(«transactions_detail»)
RefCells = NamedRange.getReferredCells()
Set MainRange = RefCells.getDataArray()
Затем я перебираю MainRange и вытаски….
Я пишу функцию в LibreOffice basic для поиска позиции символа в строке:
REM ***** BASIC *****
Const Source = «abcdefghijklmnopwrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ»
Function GetPos(Char As String) As Integer
GetPos = InStr(Source, Char)
End Function
И я вызываю его из электронной таблицы, исп….
Можно ли запустить один макрос для всех файлов xls / xlsx, и если да, то как? Макрос, показанный ниже, масштабирует файл Excel, чтобы он поместился на одной странице, что необходимо, так как количество столбцов равно 19 и необходимо для преобразования его в PDF с помощью lo cli.
Бесплатная офисная ….
В LibreOffice Calc у меня есть вызов функции (макроса) LibreOffice Basic в ячейке. Как я могу обновить эту ячейку автоматически , если какая-то другая ячейка была изменена, без обновления всего листа?….
Мне нужно найти текст в таблице Writer, а затем передать содержимое ячейки справа от найденного текста в переменную. Текст успешно найден с этим кодом:
Sub get_contr_num
dim oDoc as Object
dim oFound as Object
dim oDescriptor
dim oCursor as Object
oDoc = ThisComponent
oDescr….
Часть кода
dim oMainForm as object
dim oColumnList as object
dim theValue as variant
oMainForm = ThisDatabaseDocument.FormDocuments.getByName(«update_rform»)
oColumnList = oMainForm.getByName(«rid») #rid is the name of the field from which I need to get the value
theValue=oColumnList.getCur….
Этот вопрос был отправлен, чтобы помочь решить эту проблему Спросите Ubuntu о награде в 350 баллов, которая заканчивается сегодня. Я бы предпочел, чтобы кто-то в переполнении стека отправил ответ и получил награду, чем увидел бы, что оно не будет вознаграждено, а OP не получит рабочего решения…..
Переменные и типы данных LibreOffice Basic
Я уже очень давно обещал начать писать о скриптовом языке программирования Basic в LibreOffice и создании при помощи этого языка макросов. Эта статья посвящена типам данных используемых в Basic и, в большей мере, правилам описания и возможности использования переменных. Как всегда я постараюсь выложить максимум информации, и по этому надеюсь что эта простая тема будет полезна не только начинающим пользователям. Отдельно хотелось бы поблагодарить всех, кто прокомментировал статью, дал свои рекомендации, и помог разобраться со сложными моментами.
Соглашения об именовании переменных
Имена переменных не могут включать более 255 символов. Любое имя переменной должно начинаться с заглавной или строчной буквы латинского алфавита или знака подчеркивания («_»). В именах переменных разрешается использовать цифры и знак подчеркивания. Некоторые другие знаки препинания и буквы не латинского алфавита приведут к появлению сообщения «Синтаксическая ошибка» или «Ошибка выполнения BASIC», если их не заключить в квадратные скобки.
Примеры правильного наименования переменных.
MyNumber=5
-
MyNumber5=15
-
MyNumber_5=20
-
[My Number]=20.5
-
[5MyNumber]=12
-
[Number,Mine]=12
-
[DéjàVu]="кажется я это видел!"
-
[Моя переменная]="первый пошёл!"
-
[Мой % от сделки]=0.0001
Обратите внимание на квадратные скобки. Если их убрать, то макрос начнет выдавать ошибку. Как вы можете догадаться, этот способ позволяет нам задавать переменные с кириллическими именами. Но для того, чтобы писать также как в 1С только русскими командами, вам придется сделать довольно толстый слой абстракции. Помните, что все служебные слова, встроенные объекты, их методы и свойства в языке LibreOffice Basic в настоящее время пишутся латинским алфавитом. Удобно ли пользоваться квадратными скобками, решать вам. Возможность задавать экзотические
имена переменным существует, но на практике в нашем сообществе этот функционал используется исключительно редко.
Объявление переменных
Строго говоря в Basic
объявлять переменные не обязательно, за исключением массивов. Если вы пишите макрос из пары строчек, и этот макрос будет работать с небольшими документами, то объявлением переменных можно пренебречь. В этом случае переменная будет автоматически объявляться как тип Variant
. Во всех случаях когда макрос больше пары строчек или документ большой, настоятельно рекомендуется объявлять переменные. Во-первых, это увеличивает читаемость текста. Во-вторых, это позволяет контролировать переменные, что может значительно облегчить поиск ошибок. В-третьих, тип данных Variant
очень ресурсозатратный, и необходимо значительное время для скрытого преобразования. Кроме того, Variant
выбирает не оптимальный тип переменной для данных, что также увеличивает загруженность ресурсов компьютера.
Basic предоставляет возможность автоматического присвоения типа переменной по её префиксу (первой буквы в имени) для упрощения работы, если вы предпочитаете использовать венгерскую нотацию. Для этого используется ключевое слово DefXXX и после него буква, с которой начинаются переменные этого типа. XXX в данном случае буквенное обозначение типа. Ключевое слово с буквой будет работать в пределах модуля, и должно указываться до появления подпрограмм и функций. Всего существует 11 таких типов.
DefBool
— для логический переменных;DefInt
— для целочисленных переменных типа Integer
;DefLng
— для целочисленных переменных типа Long
;DefSng
— для переменных с плавающей точкой одинарной точности типа Single
;DefDbl
— для переменных с плавающей точкой двойной точности типа Double
;DefCur
— для переменных с фиксированной точкой типа Currency
;DefStr
— для строковых переменных; DefDate
— для переменных даты и времени;DefVar
— для переменных типа Variant
;DefObj
— для объектных переменных;DefErr
— для объектных переменных содержащих информацию об ошибках.
Если вы уже имеете представление о типах переменных в LibreOffice Basic, то наверное заметили, что в этом списке нет типа Byte
, но есть для странного зверя с типом Error
. К сожалению, это нужно просто запомнить. Вменяемого ответа на этот вопрос я пока не нашёл. Этот способ удобен, так как тип присваивается переменным автоматически. Но он не позволяет находить ошибки, связанные с опечатками в переменных. Кроме того, не удастся задать буквы не латинского алфавита, то есть, все имена переменных в квадратных скобках, которые необходимо объявлять, нужно объявлять явно.
Для избежания случайных опечаток при использовании объявленных явно переменных можно воспользоваться инструкцией OPTION EXPLICIT
. Эта инструкция должна быть первой строкой кода в модуле. Все остальные команды, кроме комментариев, должны располагаться после неё. Эта инструкция указывает интерпретатору, что все переменные должны быть объявлены явно, иначе он выдает ошибку. Естественно, эта инструкция делает бессмысленным использование инструкции Def в коде.
Объявить переменную можно с помощью оператора Dim
. Можно объявлять несколько переменных одновременно даже разного типа, если разделять их имена запятыми. Для определения типа переменной при явном объявлении можно использовать либо соответствующее ключевое слово, либо знак типа после имени. Если после переменной не используется ключевое слово или знак типа переменной, то ей автоматически присваивается тип Variant. Например:
Dim iMyVar 'объявлена переменная типа Variant'
Dim iMyVar1 As Integer, iMyVar2 As Integer 'в обоих случаях тип целое'
Dim iMyVar3, iMyVar4 As Integer 'в этом случае первая переменная'
'Variant, а вторая целое'
Типы переменных
В LibreOffice Basic предусмотрена поддержка семи классов переменных.
- Логические переменные содержат одно из значений:
TRUE
илиFALSE
. - Числовые переменные содержат числовые значения. Они могут быть целочисленные, целочисленные положительные, с плавающей точкой и с фиксированной точкой.
- Строковые переменные содержат строки символов.
- Переменные даты могут содержать дату и/или время во внутреннем формате.
- Объектные переменные могут содержать объекты различных типов.
- Специальные типы, такие как структуры, массивы.
- Абстрактный тип
Variant
.
Логические переменные — тип Boolean
Переменные типа Boolean
могут содержать только одно из двух значений: TRUE
или FALSE
. При этом нужно понимать, что в числовом эквиваленте значению FALSE
соответствует число 0, а значению TRUE
соответствует -1 (минус единица). Но любое значение отличное от нуля переданное в переменную типа Boolean
будет конвертировано в TRUE
, то есть преобразовано в минус единицу. Явно объявить переменную можно следующим способом.
Dim MyBoolVar As Boolean
Специального символа для неё я не нашёл. Для неявного объявления можно воспользоваться инструкцией DefBool
. Например:
DefBool b 'переменные начинающиеся с b по умолчанию имеют тип Boolean
Начальное значение переменной устанавливается в FALSE
. Для переменной типа Boolean
требуется один байт памяти.
Целочисленные переменные
К целочисленным переменным относится 3 типа Byte
, Integer
и Long Integer
. Эти переменные могут содержать только целые числа. При передаче чисел с дробной частью в такие переменные, происходит округление по правилам классической арифметики (а не в большую сторону, как написано в справке). Начальным значением для этих переменных является 0 (ноль).
Типа Byte
Переменные типа Byte
могут содержать только целочисленные положительные значения в диапазоне от 0 до 255. Не путайте этот тип с физическим размером информации в байт. Слово Byte лишь указывает на размерность числа. Объявить переменную этого типа можно следующим образом:
Dim MyByteVar As Byte
Специального символа для объявления этого типа нет. Инструкции Def
для этого типа тоже нет. Из-за маленькой размерности этот тип будет удобнее всего в счетчиках, значения которых не выходят за диапазон. Для переменной типа Byte
требуется один байт памяти.
Тип Integer
Переменные типа Integer могут содержать целочисленные значение от -32768 до 32767. Они удобны для быстрых вычислений в целых числах и пригодны в счетчиках циклов. «%
» — специальный символ объявления типа. Объявить переменную этого типа можно следующими способами:
Dim MyIntegerVar%
Dim MyIntegerVar As Integer
Для неявного объявления можно воспользоваться инструкцией DefInt
. Например:
DefInt i 'переменные начинающиеся с i по умолчанию имеют тип Integer
Для переменной типа Integer
требуется два байта памяти.
Тип Long Integer
Переменные типа Long Integer могут содержать целочисленные значения от -2147483648 до 2147483647. Переменные типа Long Integer удобны в целочисленных вычислениях, когда диапазона типа Integer недостаточен для реализации алгоритма. «&
» — специальный символ объявления типа. Объявить переменную этого типа можно следующими способами:
Dim MyLongVar&
Dim MyLongVar as Long
Для неявного объявления можно воспользоваться инструкцией DefLng
. Например:
DefLng l 'переменные начинающиеся с l будут по умолчанию иметь тип Long
Для переменной типа Long Integer требуется четыре байта памяти.
Числа с дробной частью
Все переменные этого типа могут принимать положительные или отрицательные значения чисел с дробной частью. Начальным значением для них является 0 (ноль). Как говорилось выше, если число с дробной частью присвоено переменной способной содержать только целые числа, то LibreOffice Basic округляет число по правилам классической арифметики.
Тип Single
Переменные типа Single
могут принимать положительные или отрицательные значения в диапазоне от 3.402823x10E+38 до 1.401293x10E-38. Значения переменных этого типа — это числа с плавающей точкой одинарной точности и могут иметь 7 знаков после запятой. Если объяснять на пальцах, в этом формате хранятся только 8 знаков числа (мантисса числа), а остальная часть храниться виде степени десяти (порядок числа). В отладчике Basic IDE можно видеть только 6 знаков после запятой, но это наглая ложь. Вычисления с переменными типа Single
занимают больше времени, чем для переменных типа Integer
, но выполняются быстрее, чем вычисления с переменными типа Double
. Специальным символом объявления типа является «!
«. Объявить переменную этого типа можно следующими способами:
Dim MySingleVar!
Dim MySingleVar as Single
Для неявного объявления можно воспользоваться инструкцией DefSng
. Например:
DefSng f 'переменные начинающиеся с f по умолчанию имеют тип Single
Для переменной типа Single
требуется 4 байта памяти.
Тип Double
Переменные типа Double
могут принимать положительные или отрицательные значения в диапазоне от 1.79769313486231598x10E308 до 1.0x10E-307. Почему такой странный диапазон? Скорее всего в интерпретаторе есть дополнительные проверки, которые приводят к такой странной ситуации. Значения переменных типа Double — это числа с плавающей точкой двойной точности и могут иметь 15 знаков после запятой. В отладчике Basic IDE можно видеть только 14 знаков после запятой, но это тоже наглая ложь. Переменные типа Double
пригодны для точных вычислений. Вычисления требуют больше времени, чем вычисления для типа Single
. Специальным символом объявления типа является «#
«. Объявить переменную этого типа можно следующими способами:
Dim MyDoubleVar#
Dim MyDoubleVar As Double
Для неявного объявления можно воспользоваться инструкцией DefDbl
. Например:
DefDbl d 'переменные начинающиеся с d по умолчанию имеют тип Double
Для переменной типа Double
требуется 8 байта памяти.
Тип Currency
Переменные типа Currency
отображаются как числа с фиксированной точкой и имеют 15 знаков в целой части и 4 знака в дробной. Диапазон значений включает числа от -922337203685477.6874 до +922337203685477.6874. Переменные типа Currency
предназначены для точных расчетов денежных значений. Специальным символом описания типа является «@
«. Объявить переменную этого типа можно следующими способами:
Dim MyCurrencyVar@
Dim MyCurrencyVar As Currency
Для неявного объявления можно воспользоваться инструкцией DefCur
. Например:
DefCur c 'переменные начинающиеся с c по умолчанию имеют тип Currency
Для переменной типа Currency
требуется 8 байт памяти.
Строковые переменные — тип String
Переменные типа String
могут содержать строки , в которых каждый не более 65535 символов. Каждый символ хранится как соответствующее значение Юникод. Они используются для работы с текстовой информацией и, кроме печатных знаков (символов), могут также содержать непечатаемые знаки. О максимальном размере строки я не знаю. Mike Kaganski экспериментальным образом установил значение в 2147483638 символа, после чего LibreOffice падает. Это соответствует почти 4 Гигабайтам символов.Специальным символом описания типа является «$
«. Объявить переменную этого типа можно следующими способами:
DimMyStringVar$
Dim MyStringVar As String
Для неявного объявления можно воспользоваться инструкцией DefStr
. Например:
DefStr s 'переменные начинающиеся с s по умолчанию имеют тип String
Начальное значение этих переменных пустая строка («»). Память, требуемая для хранения строковых переменных, зависит от числа символов в переменной.
Даты и время — типа Date
Переменные типа Date могут содержать только значения даты и времени, сохраненные во внутреннем формате. Этот внутренний формат является по факту числом с плавающей точкой двойной точности Double, где целая часть это количество дней, а дробная часть дня (то есть, 0.00001157407 — это одна секунда). При этом значение 0 равно 30.12.1899. Но интерпретатор Basic автоматически конвертирует его в читабельный вариант при выводе, но не при вводе. Для правильного и быстрого преобразования во внутренний формат типа Date можно использовать функции Dateserial, Datevalue, Timeserial или Timevalue. Извлечь какую-нибудь определённую часть из переменной в формате Date можно с помощью функции Day, Month, Year или Hour, Minute, Second. Внутренний формат позволяет сравнивать значения даты и времени путем расчета разности двух чисел. Для типа Date нет специального символа для определения, поэтому при явном определении нужно использовать ключевое слово Date.
Dim MyDateVar As Date
Для неявного объявления можно воспользоваться инструкцией DefDate
. Например:
DefDate y 'переменные начинающиеся с y по умолчанию имеют тип Date
Для переменной типа Date
требуется 8 байта памяти.
Тип переменных Object
Условно к объектам в LibreOffice Basic можно отнести два типа переменных.
Объекты
Переменные типа Object
являются переменными хранящими объекты. Если не вдаваться в подробности, то объектом считается любая обособленная часть программы имеющая структуру, свойства и методы доступа и обработки данных. Например, документ, ячейка, параграф, диалоговые окна — это объекты. Они имеют имя, размер, свойства, и методы их задания. В свою очередь, эти объекты состоят тоже из объектов, которые в свою очередь тоже могут состоять из объектов. Такая пирамида объектов часто называется объектной моделью, и она позволяет, разрабатывая маленькие объекты, объединять их в большие. В свою очередь, через больший объект, мы имеем доступ к более мелким. И это позволяет нам оперировать нашими документами, заниматься созданием и обработкой их, при этом абстрагировавшись от конкретного документа. Для типа Object
нет специального символа для определения, поэтому при явном определении нужно использовать ключевое слово Object
.
Dim MyObjectVar As Object
Для неявного объявления можно воспользоваться инструкцией DefObj
. Например:
DefObj o 'переменные начинающиеся с o по умолчанию имеют тип Object
Переменная типа Object
не хранит в себе сам объект, а является только ссылкой на него. Начальное значение для этого типа переменных Null.
Структуры
Структура по сути тоже объект. И если вы будете смотреть в отладчике Basic IDE, то у большинства из них вы увидите тип Object
. Не у всех. У некоторых, например, как у структуры Error будет тип Error, а не Object
. Но грубо говоря структуры в LibreOffice Basic это просто сгруппированные в один объект переменные, без специальных методов доступа. Ещё одним существенным отличием является то, что при объявлении переменной типа «структура» мы должны указывать её имя, а не служебное слово Object
. Например, если MyNewStructure это имя структуры, то объявление её переменной будет выглядеть как:
Dim MyStructureVar As MyNewStructure
Существует довольно большое количество встроенных структур. Но пользователь может создавать и свои личные. Структуры могут быть удобны в тех случаях когда нам нужно оперировать наборами разнородной информации, которые должны рассматриваться как единое целое. Например, имя, фамилия и отчество человека. В этом случае мы могли бы, например, создать структуру tPerson.
Type tPerson
Name As String
Age As Integer
Weight As Double
End Type
Определение структуры должно идти до подпрограмм и функций её использующих.
Чтобы заполнить структуру можно воспользоваться следующим способом. Для примера, встроенная структура com.sun.star.beans.PropertyValue
:
Dim oProp As New
com.sun.star.beans.PropertyValue
oProp.Name = "Age" 'Устанавливаем свойство Name'
oProp.Value = "Amy Boyer" 'Устанавливаем свойство Property'
Для более простого заполнения структуры, можно использовать оператор With.
Dim oProp As New com.sun.star.beans.PropertyValue
With oProp
.Name = "Age" 'Устанавливаем свойство Name'
.Value = "Amy Boyer" 'Устанавливаем свойство Property'
End With
Начальное значение есть только для каждой переменной в структуре и соответствует типу переменной.
Тип переменных Variant
Это виртуальный тип переменных. Тип переменной автоматически подбирается под данные, которыми нужно оперировать. Проблема лишь в том, что для интерпретатора не стоит цели экономить наши ресурсы, и он предлагает не самые оптимальные варианты типов переменных. Например, он не знает что единицу можно записать в Byte, а 100000 в Long Integer, хотя воспроизводит тип, если значение передается из другой переменной с объявленным типом. И кроме того, само преобразование довольно ресурсозатратное. Поэтому этот тип переменных самый медленный из всех. Если необходимо объявить этот вид переменных, можно воспользоваться ключевым словом Variant
. Но можно опустить описание типа вовсе, типа Variant
будет присвоен автоматически. Специального знака для этого типа нет.
Dim MyVariantVar
Dim MyVariantVar As Variant
Для неявного объявления можно воспользоваться инструкцией DefVar
. Например:
DefVar v 'переменные начинающиеся с v по умолчанию имеют тип Variant
Этот тип переменных присваивается по умолчанию всем не объявленным переменным.
Массивы
Массивы — это особый тип переменных в виде набора данных больше напоминающий математическую матрицу, за исключением того, что данные могут быть различного типа, и позволяющие обращаться к своим элементам по индексу (номеру элемента). Конечно, одномерный массив будет подобен столбцу или стрке, а двухмерный таблице. Есть одна особенность массивов в LibreOffice Basic, отличающая его от других языков программирования. Так как у нас есть абстрактный тип Variant, то элементы массива, не обязаны быть однородными. То есть, если у нас есть массив Array с тремя элементами под номерами от 0 до 2, и мы в первый элемент Array(0) записываем имя, во второй Array(1) возраст, а в третий Array(2) вес человека, то можем иметь соответственно значения типов для Array(0) String, для Array(1) Integer, а для Array(2) Double. В этом случае массив будет напоминать структуру с возможностью доступа к элементу по его индексу. Элементы массива также могут быть однородными, другими массивами, объектами, структурами, строками, или любым другим типом данных используемым в языке LibreOffice Basic.
Массивы обязательно должны быть объявлены. Хотя пространство индексов может быть в диапазоне типа Integer, то есть от -32768 до 32767, по умолчанию начальный индекс выбирается как 0. Объявить массив можно несколькими способами:
Dim MyArrayVar(5) as String 'Массив строк с 6 элементами от 0 до 5'
Dim MyArrayVar$(5) 'тоже самое что и предыдущий вариант'
Dim MyArrayVar(1 To 5) As String 'Массив строк с 5 элементами от 1 до 5'
Dim MyArrayVar(5,5) As String 'двухмерный массив строк с 36 элементами'
'с индексами в каждом уровне от 0 до 5'
Dim MyArrayVar$(-4 To 5, -4 To 5) 'двухмерный массив строк со 100'
'элементами с индексами в каждом уровне'
'от -4 до 5'
Dim MyArrayVar() 'пустой массив типа Variant'
Изменить нижнюю границу (индекс первого элемента массива) по умолчанию можно при помощи ключевых слов Option Base
, которые должны быть указаны до использования подпрограмм, функций и определения пользовательский структур. Option Base
может принимать только два значения 0 или 1, которые должны следовать сразу после ключевых слов. Действие распространяется только на текущий модуль.
Дополнительная литература и источники:
How to start writing macros in LibreOffice Basic
I have long promised to write about the scripting language Basic and creating macros in LibreOffice. This article is devoted to the types of data used in LibreOffice Basic, and to a greater extent, descriptions of variables and the rules for using them. I will try to provide enough information for advanced as well as novice users.
(And, I would like to thank everyone who commented on and offered recommendations on the Russian article, especially those who helped answer difficult questions.)
Variable naming conventions
Variable names cannot contain more than 255 characters. They should start with either upper- or lower-case letters of the Latin alphabet, and they can include underscores («_») and numerals. Other punctuation or characters from non-Latin alphabets can cause a syntax error or a BASIC runtime error if names are not put within square brackets.
Here are some examples of correct variable names:
MyNumber=5MyNumber5=15
MyNumber_5=20
_MyNumber=96
[My Number]=20.5
[5MyNumber]=12
[Number,Mine]=12
[DéjàVu]="It seems that I have seen it!"
[Моя переменная]="The first has went!"
[Мой % от зделки]=0.0001
Note: In examples that contain square brackets, if you remove the brackets, macros will show a window with an error. As you can see, you can use localized variable names. Whether it makes sense to do so is up to you.
Declaring variables
Strictly speaking, it is not necessary to declare variables in LibreOffice Basic (except for arrays). If you write a macro from a pair of lines to work with small documents, you don’t need to declare variables, as the variable will automatically be declared as the variant type. For longer macros or those that will work in large documents, it is strongly recommended that you declare variables. First, it increases the readability of the text. Second, it allows you to control variables that can greatly facilitate the search for errors. Third, the variant type is very resource-intensive, and considerable time is needed for the hidden conversion. In addition, the variant type does not choose the optimal variable type for data, which increases the workload of computer resources.
Basic can automatically assign a variable type by its prefix (the first letter in the name) to simplify the work if you prefer to use the Hungarian notation. For this, the statement DefXXX is used; XXX is the letter type designation. A statement with a letter will work in the module, and it must be specified before subprograms and functions appear. There are 11 types:
DefBool - for boolean variables;
DefInt - for integer variables of type Integer;
DefLng - for integer variables of type Long Integer;
DefSng - for variables with a single-precision floating point;
DefDbl - for variables with double-precision floating-point type Double;
DefCur - for variables with a fixed point of type Currency;
DefStr - for string variables;
DefDate - for date and time variables;
DefVar - for variables of Variant type;
DefObj - for object variables;
DefErr - for object variables containing error information.
If you already have an idea of the types of variables in LibreOffice Basic, you probably noticed that there is no Byte type in this list, but there is a strange beast with the Error type. Unfortunately, you just need to remember this; I have not yet discovered why this is true. This method is convenient because the type is assigned to the variables automatically. But it does not allow you to find errors related to typos in variable names. In addition, it will not be possible to specify non-Latin letters; that is, all names of variables in square brackets that need to be declared must be declared explicitly.
To avoid typos when using declared variables explicitly, you can use the statement OPTION EXPLICIT. This statement should be the first line of code in the module. All other commands, except comments, should be placed after it. This statement tells the interpreter that all variables must be declared explicitly; otherwise, it produces an error. Naturally, this statement makes it meaningless to use the Def statement in the code.
A variable is declared using the statement Dim. You can declare several variables simultaneously, even different types, if you separate their names with commas. To determine the type of a variable with an explicit declaration, you can use either a corresponding keyword or a type-declaration sign after the name. If a type-declaration sign or a keyword is not used after the variable, then the Variant type is automatically assigned to it. For example:
Dim iMyVar 'variable of Variant type
Dim iMyVar1 As Integer, iMyVar2 As Integer 'in both cases Integer type
Dim iMyVar3, iMyVar4 As Integer 'in this case the first variable
'is Variant, and the second is Integer
Variable types
LibreOffice Basic supports seven classes of variables:
- Logical variables containing one of the values: TRUE or FALSE
- Numeric variables containing numeric values. They can be integer, integer-positive, floating-point, and fixed-point
- String variables containing character strings
- Date variables can contain a date and/or time in the internal format
- Object variables can contain objects of different types and structures
- Arrays
- Abstract type Variant
Logical variables – Boolean
Variables of the Boolean type can contain only one of two values: TRUE or FALSE. In the numerical equivalent, the value FALSE corresponds to the number 0, and the value TRUE corresponds to -1 (minus one). Any value other than zero passed to a variable of the Boolean type will be converted to TRUE; that is, converted to a minus one. You can explicitly declare a variable in the following way:
Dim MyBoolVar As Boolean
I did not find a special symbol for it. For an implicit declaration, you can use the DefBool statement. For example:
DefBool b 'variables beginning with b by default are the type Boolean
The initial value of the variable is set to FALSE. A Boolean variable requires one byte of memory.
Integer variables
There are three types of integer variables: Byte, Integer, and Long Integer. These variables can only contain integers. When you transfer numbers with a fraction into such variables, they are rounded according to the rules of classical arithmetic (not to the larger side, as it stated in the help section). The initial value for these variables is 0 (zero).
Byte
Variables of the Byte type can contain only integer-positive values in the range from 0 to 255. Do not confuse this type with the physical size of information in bytes. Although we can write down a hexadecimal number to a variable, the word «Byte» indicates only the dimensionality of the number. You can declare a variable of this type as follows:
Dim MyByteVar As Byte
There is no a type-declaration sign for this type. There is no the statement Def of this type. Because of its small dimension, this type will be most convenient for a loop index, the values of which do not go beyond the range. A Byte variable requires one byte of memory.
Integer
Variables of the Integer type can contain integer values from -32768 to 32767. They are convenient for fast calculations in integers and are suitable for a loop index. % is a type-declaration sign. You can declare a variable of this type in the following ways:
Dim MyIntegerVar%
Dim MyIntegerVar As Integer
For an implicit declaration, you can use the DefInt statement. For example:
DefInt i 'variables starting with i by default have type Integer
An Integer variable requires two bytes of memory.
Long integer
Variables of the Long Integer type can contain integer values from -2147483648 to 2147483647. Long Integer variables are convenient in integer calculations when the range of type Integer is insufficient for the implementation of the algorithm. & is a type-declaration sign. You can declare a variable of this type in the following ways:
Dim MyLongVar&
Dim MyLongVar As Long
For an implicit declaration, you can use the DefLng statement. For example:
DefLng l 'variables starting with l have Long by default
A Long Integer variable requires four bytes of memory.
Numbers with a fraction
All variables of these types can take positive or negative values of numbers with a fraction. The initial value for them is 0 (zero). As mentioned above, if a number with a fraction is assigned to a variable capable of containing only integers, LibreOffice Basic rounds the number according to the rules of classical arithmetic.
Single
Single variables can take positive or negative values in the range from 3.402823x10E+38 to 1.401293x10E-38. Values of variables of this type are in single-precision floating-point format. In this format, only eight numeric characters are stored, and the rest is stored as a power of ten (the number order). In the Basic IDE debugger, you can see only 6 decimal places, but this is a blatant lie. Computations with variables of the Single type take longer than Integer variables, but they are faster than computations with variables of the Double type. A type-declaration sign is !. You can declare a variable of this type in the following ways:
Dim MySingleVar!
Dim MySingleVar As Single
For an implicit declaration, you can use the DefSng statement. For example:
DefSng f 'variables starting with f have the Single type by default
A single variable requires four bytes of memory.
Double
Variables of the Double type can take positive or negative values in the range from 1.79769313486231598x10E308 to 1.0x10E-307. Why such a strange range? Most likely in the interpreter, there are additional checks that lead to this situation. Values of variables of the Double type are in double-precision floating-point format and can have 15 decimal places. In the Basic IDE debugger, you can see only 14 decimal places, but this is also a blatant lie. Variables of the Double type are suitable for precise calculations. Calculations require more time than the Single type. A type-declaration sign is #. You can declare a variable of this type in the following ways:
Dim MyDoubleVar#
Dim MyDoubleVar As Double
For an implicit declaration, you can use the DefDbl statement. For example:
DefDbl d 'variables beginning with d have the type Double by default
A variable of the Double type requires 8 bytes of memory.
Currency
Variables of the Currency type are displayed as numbers with a fixed point and have 15 signs in the integral part of a number and 4 signs in fractional. The range of values includes numbers from -922337203685477.6874 to +92337203685477.6874. Variables of the Currency type are intended for exact calculations of monetary values. A type-declaration sign is @. You can declare a variable of this type in the following ways:
Dim MyCurrencyVar@
Dim MyCurrencyVar As Currency
For an implicit declaration, you can use the DefCur statement. For example:
DefCur c 'variables beginning with c have the type Currency by default
A Currency variable requires 8 bytes of memory.
String
Variables of the String type can contain strings in which each character is stored as the corresponding Unicode value. They are used to work with textual information, and in addition to printed characters (symbols), they can also contain non-printable characters. I do not know the maximum size of the line. Mike Kaganski experimentally set the value to 2147483638 characters, after which LibreOffice falls. This corresponds to almost 4 gigabytes of characters. A type-declaration sign is $. You can declare a variable of this type in the following ways:
Dim MyStringVar$
Dim MyStringVar As String
For an implicit declaration, you can use the DefStr statement. For example:
DefStr s 'variables starting with s have the String type by default
The initial value of these variables is an empty string («»). The memory required to store string variables depends on the number of characters in the variable.
Date
Variables of the Date type can contain only date and time values stored in the internal format. In fact, this internal format is the double-precision floating-point format (Double), where the integer part is the number of days, and the fractional is part of the day (that is, 0.00001157407 is one second). The value 0 is equal to 30.12.1899. The Basic interpreter automatically converts it to a readable version when outputting, but not when loading. You can use the Dateserial, Datevalue, Timeserial, or Timevalue functions to quickly convert to the internal format of the Date type. To extract a certain part from a variable in the Date format, you can use the Day, Month, Year, Hour, Minute, or Second functions. The internal format allows us to compare the date and time values by calculating the difference between two numbers. There is no a type-declaration sing for the Date type, so if you explicitly define it, you need to use the Date keyword.
Dim MyDateVar As Date
For an implicit declaration, you can use the DefDate statement. For example:
DefDate y 'variables starting with y have the Date type by default
A Date variable requires 8 bytes of memory.
Types of object variables
We can take two variables types of LibreOffice Basic to Objects.
Objects
Variables of the Object type are variables that store objects. In general, the object is any isolated part of the program that has the structure, properties, and methods of access and data processing. For example, a document, a cell, a paragraph, and dialog boxes are objects. They have a name, size, properties, and methods. In turn, these objects also consist of objects, which in turn can also consist of objects. Such a «pyramid» of objects is often called an object model, and it allows us, when developing small objects, to combine them into larger ones. Through a larger object, we have access to smaller ones. This allows us to operate with our documents, to create and process them while abstracting from a specific document. There is no a type-declaration sing for the Object type, so for an explicit definition, you need to use the Object keyword.
Dim MyObjectVar As Object
For an implicit declaration, you can use the DefObj statement. For example:
DefObj o 'variables beginning with o have the type Object by default
The variable of type Object does not store in itself an object but is only a reference to it. The initial value for this type of variables is Null.
Structures
The structure is essentially an object. If you look in the Basic IDE debugger, most (but not all) are the Object type. Some are not; for example, the structure of the Error has the type Error. But roughly speaking, the structures in LibreOffice Basic are simply grouped into one object variable, without special access methods. Another significant difference is that when declaring a variable of the Structure type, we must specify its name, rather than the Object. For example, if MyNewStructure is the name of a structure, the declaration of its variable will look like this:
Dim MyStructureVar As MyNewStructure
There are a lot of built-in structures, but the user can create personal ones. Structures can be convenient when we need to operate with sets of heterogeneous information that should be treated as a single whole. For example, to create a tPerson structure:
Type tPerson
Name As String
Age As Integer
Weight As Double
End Type
The definition of the structure should go before subroutines and functions that use it.
To fill a structure, you can use, for example, the built-in structure com.sun.star.beans.PropertyValue:
Dim oProp As New com.sun.star.beans.PropertyValue
OProp.Name = "Age" 'Set the Name
OProp.Value = "Amy Boyer" 'Set the Property
For a simpler filling of the structure, you can use the With operator.
Dim oProp As New com.sun.star.beans.PropertyValue
With oProp
.Name = "Age" 'Set the Name
.Value = "Amy Boyer" 'Set the Property
End With
The initial value is only for each variable in the structure and corresponds to the type of the variable.
Variant
This is a virtual type of variables. The Variant type is automatically selected for the data to be operated on. The only problem is that the interpreter does not need to save our resources, and it does not offer the most optimal variants of variable types. For example, it does not know that 1 can be written in Byte, and 100000 in Long Integer, although it reproduces a type if the value is passed from another variable with the declared type. Also, the transformation itself is quite resource-intensive. Therefore, this type of variable is the slowest of all. If you need to declare this kind of variable, you can use the Variant keyword. But you can omit the type description altogether; the Variant type will be assigned automatically. There is no a type-declaration sign for this type.
Dim MyVariantVar
Dim MyVariantVar As Variant
For an implicit declaration, you can use the DefVar statement. For example:
DefVar v 'variables starting with v have the Variant type by default
This variables type is assigned by default to all undeclared variables.
Arrays
Arrays are a special type of variable in the form of a data set, reminiscent of a mathematical matrix, except that the data can be of different types and allow one to access its elements by index (element number). Of course, a one-dimensional array will be similar to a column or row, and a two-dimensional array will be like a table. There is one feature of arrays in LibreOffice Basic that distinguishes it from other programming languages. Since we have an abstract type of variant, then the elements of the array do not need to be homogeneous. That is, if there is an array MyArray and it has three elements numbered from 0 to 2, and we write the name in the first element of MyArray(0), the age in the second MyArray(1), and the weight in the third MyArray(2), we can have, respectively, the following type values: String for MyArray(0), Integer for MyArray(1), and Double for MyArray(2). In this case, the array will resemble a structure with the ability to access the element by its index. Array elements can also be homogeneous: Other arrays, objects, structures, strings, or any other data type can be used in LibreOffice Basic.
Arrays must be declared before they are used. Although the index space can be in the range of type Integer—from -32768 to 32767—by default, the initial index is selected as 0. You can declare an array in several ways:
Dim MyArrayVar(5) as string | String array with 6 elements from 0 to 5 |
Dim MyArrayVar$(5) | Same as the previous |
Dim MyArrayVar(1 To 5) as string | String array with 5 elements from 1 to 5 |
Dim MyArrayVar(5,5) as string | Two-dimensional array of rows with 36 elements with indexes in each level from 0 to 5 |
Dim MyArrayVar$(-4 To 5, -4 To 5) | Two-dimensional strings array with 100 elements with indexes in each level from -4 to 5 |
Dim MyArrayVar() | Empty array of the Variant type |
You can change the lower bound of an array (the index of the first element of the array) by default using the Option Base statement; that must be specified before using subprograms, functions, and defining user structures. Option Base can take only two values, 0 or 1, which must follow immediately after the keywords. The action applies only to the current module.
Learn more
If you are just starting out in programming, Wikipedia provides general information about the array, structure, and many other topics.
For a more in-depth study of LibreOffice Basic, Andrew Pitonyak’s website is a top resource, as is the Basic Programmer’s guide. You can also use the LibreOffice online help. Completed popular macros can be found in the Macros section of The Document Foundation’s wiki, where you can also find additional links on the topic.
For more tips, or to ask questions, visit Ask LibreOffice and OpenOffice forum.
LibreOffice | Русскоязычная документация по Ubuntu
LibreOffice — свободный, независимый пакет офисных программ с открытым исходным кодом, разрабатываемый The Document Foundation.
Пакет программ Libre Office с 2010 года является ответвлением от пакета OpenOffice.org. Причина создания отдельной и независимой ветки: несогласие с жёсткой и навязываемой политикой Oracle — владельца, унаследовавшего пакет Open Office от компании Sun. Затем пакеты разрабытывались независимо. В 2011 году компания Oracle отказалась от разработки OpenOffice и передала Open Office фонду Apache. После чего началась работа по налаживанию возможности передачи друг другу наработок обоих проектов, перелицензированию кода.
В 2012 году компания IBM подключилась к разработке, в свою очередь передав фонду Apache свои наработки — офисный пакет Lotus Symphony (URL). Вместе с этим, компания Canonical, наряду с другими, отказалась от Open Office, от включения пакета в состав дистрибутива Ubuntu, заменив пакет на Libre Office.
Libre Office является офисным пакетом по умолчанию в Ubuntu начиная с версии 11.04 Oneiric Ocelot.
Не рекомендуется устанавливать LibreOffice из .deb-файлов.
Установка из репозитория даёт возможность автообновления и интеграции в рабочую среду.
Apache OpenOffice и LibreOffice не могут быть установлены одновременно.
Устанавливая LibreOffice по этой инструкции, вы автоматически и безопасно удалите OpenOffice.org.
Текущее состояние пакетов LibreOffice в Ubuntu можно отслеживать подписавшись на рассылку в трекере.
Начиная с Ubuntu 11.04 LibreOffice является неотъемлемой частью Ubuntu и уже установлен по умолчанию.
Для Ubuntu 10.04 LTS и 10.10 необходимо воспользоваться персональным источником пакетов LibreOffice (PPA). Хоть и не рекомендуется использовать сторонние источники приложений, но с апреля 2011 года источник LibreOffice признан содержащим официальные версии. Перед внедрением в производственных целях, удостоверьтесь в корректности работы пакета на Ubuntu 10.04 LTS или 10.10.
Откройте менеджер источников
Система → Администрирование → Источники приложений
.В «Центре приложений Ubuntu» (меню
Приложения → Центр приложений Ubuntu
) найдите LibreOffice через поиск.Нажмите кнопку «Установить» и введите свой пароль.
Сделаем LibreOffice доступным для установки:
Откройте терминал
Приложения → Стандартные → Терминал
.- Добавьте источник в систему и обновите список пакетов, выполнив в терминале следующую команду:
sudo add-apt-repository ppa:libreoffice/ppa && sudo apt-get update
Выборочная установка
Для того чтобы выборочно установить LibreOffice, можно воспользоваться следующими мета-пакетами:
libreoffice-writer — текстовый редактор
libreoffice-calc — табличный редактор
libreoffice-impress — презентации
libreoffice-draw — рисование
libreoffice-base — базы данных
libreoffice-math — редактор формул
libreoffice-filter-mobiledev — фильтр для мобильных устройств
libreoffice-filter-binfilter — старые фильтры (еще со времён StarOffice 5.2)
Полная установка
Для установки всех компонентов LibreOffice:
- Установите мета-пакет LibreOffice командой:
sudo apt-get install libreoffice
- Завершите установку интеграцией с Ubuntu (Gnome):
sudo apt-get install libreoffice-gnome
или, если используете Kubuntu (KDE):
sudo apt-get install libreoffice-kde
Дополнительно можно установить модули локализации, справку и расширения. Перечень доступных модулей можно увидеть, выполнив поиск в менеджере пакетов. Например, чтобы найти модули справки, выполните в терминале:
apt-cache search libreoffice-help
Перечень доступных расширений:
libreoffice-help-ru — файлы справки
libreoffice-l10n-ru — файлы локализации (переводы)
- libreoffice-pdfimport — расширение для импорта PDF-документов
libreoffice-presentation-minimizer — расширение для сжатия презентаций
libreoffice-presenter-console — расширение LibreOffice Презентации для отдельной консоли ведущего
libreoffice-report-builder-bin — расширение для создания базы отчётов – библиотека
mozilla-libreoffice — офисный пакет программ для повышения производительности — модуль Mozilla
lo-menubar — поддержка глобального меню (только для Ubuntu 11.04 и более новых)
Глобальное меню
По умолчанию в LibreOffice включено собственное меню, не использующее возможности Unity. Для включения глобального эргономичного меню LibreOffice в верхней панели Unity необходимо установить дополнительный пакет lo-menubar
:
sudo apt-get install lo-menubar
Перезагрузите LibreOffice. Для возврата меню в предыдущее состояние удалите установленный пакет.
В настоящий момент после установки lo-menubar
могут наблюдаться проблемы, описанные в этом баге и проявляющиеся как аварийное закрытие LibreOffice при выборе Файл → Предварительный просмотр страницы.
Проверка правописания, расстановка переносов и словари
Чтобы установить надлежащую поддержку языка, нужно установить соответствующий пакет. Название пакета будет строиться следующим образом: к 'language-support-writing-
‘ добавляется нужный язык по спецификации ISO 639-11).
Например, для проверки правописания русского, украинского и английского языков нужно установить следующие пакеты:
language-support-writing-ru
language-support-writing-uk
language-support-writing-en
Быстрый способ
Откройте
Менеджер пакетов Synaptic
вСистема → Администрирование
.Убедитесь в свежести списка пакетов нажатием на кнопку
Обновить
.Найдите
openoffice.org
и пометьте для установки нужные пакеты.Закрепите изменения нажатием кнопки
Применить
. Менеджер пакетов предупредит, что нужно будет удалить LibreOffice. Соглашаемся.Удалите источник пакетов LibreOffice, удалив или сняв соответствующую отметку в менеджере пакетов Synaptic (
Система → Репозитории → Прочее ПО
).
Гарантированное удаление
Откройте
Менеджер пакетов Synaptic
вСистема → Администрирование
.Убедитесь в свежести списка пакетов нажатием на кнопку
Обновить
.В строке поиска введите
libreoffice
.Выберите все пакеты и пометьте их на полное удаление — выделить все пакеты можно выбрав один пакет, а затем нажав кнопки Ctrl+A.
Нажмите
Применить
и следуйте подсказкам.Удалите источник пакетов LibreOffice, удалив или сняв соответствующую отметку в менеджере пакетов Synaptic (
Система → Репозитории → Прочее ПО
).Кнопкой
Обновить
повторно перечитайте список пакетов.Теперь найдите
openoffice.org
и пометьте для установки нужные пакеты.Закрепите изменения нажатием кнопки
Применить
.
Некоторые онлайн-руководства советуют использовать Пометку для полного удаления
. Это не обязательно, так как LibreOffice и OpenOffice.org хранят свои файлы конфигураций в разных каталогах (~/.libreoffice
2) и ~.openoffice.org
соответственно).
Что лучше Libreoffice или Microsoft Office
Программные продукты LibreOffice и Microsoft Offcie — это всемирно известные офисные пакеты. Первый из них является полностью свободным и бесплатным, второй же — платная программа корпоративного уровня, которая является условным стандартом для ведения документов и различной отчетности.
Обе программы имеют длинную историю развития и почти одинаковы за предназначением. В операционной системе Linux может полноценно работать только Libreoffice, но действительно ли это так плохо? Чем Microsoft Office лучше? В этой статье мы попытаемся выполнить сравнение этих двух продуктов, а также выяснить что лучше Libreoffice или Microsoft Office. Сравнивать, как полагается, мы будем по категориях.
Содержание статьи:
1. История развития
Первый выпуск LibreOffice состоялся в 2001 году. Тогда программный пакет развивался компанией Sun Microsystems и назывался OpenOffice. С самого начала программа распространялась под открытой лицензией GPL и была полностью свободна. Ее код был основан на проекте StarOffice. Затем, Sun была куплена Oracle, а большинство разработчиков основали некоммерческую организацию The Document Foundation, которая занялась разработкой форка OpenOffice — LibreOffice.
Microsoft Office начал развиваться гораздо раньше. Первую версию компания Microsoft выпустила в 1990 году. Над программой работали профессиональные программисты и новые версии выходили почти каждый год. Поэтому сложилась ситуация, когда при первом релизе LibreOffice (тогда OpenOffice) продукт от Microsoft опережал его почти на 10 лет.
2. Разработка и координация
Как уже было сказано, координацией разработки LibreOffice сейчас занимается некоммерческая организация The Document Foundation. Изначально в TDF входили только Google, SUSE, Red Hat и FSF, но позже присоединились и другие организации, например Intel и AMD. Над разработкой продукта работают, в основном, энтузиасты, но многие компании выделяют ресурсы разработчиков для развития проекта. Раньше много разработчиков выделяла SUSE, за ней Red Hat и Canonical. В среднем, над проектом работают 300 активных разработчиков, но этого все еще недостаточно для очень быстрого развития.
Microsoft Office контролируется одной компанией. Все разработчики наняты на полный рабочий день и отдают все силы этому проекту. Благодаря этому Microsoft Office развивается намного быстрее, чем LibreOffice.
3. Состав пакетов
Каждый офисный пакет содержит все необходимые программы для редактирования документов. В состав Microsoft Office входят:
- Word — текстовый процессор для работы с документами;
- Excel — программа для работы с электронными таблицами;
- PowerPoint — программа для создания презентаций;
- Outlook — управление персональной информацией и почтой;
- Access — работа с базами данных;
- Binder — управление подшивками;
- FrontPage — создание веб-страниц;
- PhotoDraw — графический редактор;
- Publisher — программа для работы с визитками, буклетами и другими публикациями;
- Project — управление проектами.
LibreOffice имеет следующий комплект:
- Writer — для редактирования текстовых документов;
- Calc — для редактирования электронных таблиц;
- Base — для управления базами данных;
- Draw — редактирование векторных изображений;
- Math — работа с математическими формулами;
- Impress — программа для создания презентаций.
Как вы можете заметить в LibreOffice недостает некоторых программ, например, почтового клиента, графического редактора и т д. Но это не проблема, поскольку существует множество таких программ с открытым кодом, которые вы можете использовать. Например, тот же Thenderbird, Gimp, Krita.
4. Функциональность
Одно из важных отличий LibreOffice vs Microsoft Office — это отличия в функциональности. За столько лет развития LibreOffice во многом догнал Microsoft, так что обычные пользователи, возможно, и не заметят недостатков, но все же они есть.
В текстовом редакторе Libreoffice нельзя отметить текст левой кнопкой мыши, кликнув напротив рядка, поддержки разделов для разграничивания форматирования вообще нет, настройка размера полей на линейке не прилипает к делениям из-за чего может быть сложно выбрать правильный размер. Вставка изображений в колонтитул работает некорректно, не поддерживается вставка короткого и длинного тире с помощью сочетаний клавиш.
В Writer отклонения незначительные и в принципе, с ними мириться можно, в Calc тоже есть несколько проблем: не поддерживаются макросы MS Office, переместить одну ячейку нельзя, не поддерживается умное автозаполнение ячеек по правой кнопке, название функций только на английском, к тому же вы не можете использовать функцию из макроса. Самый значительный недостаток всех программ пакета в том, что если вы откроете в них документ Microsoft Office, то он может выглядеть совсем по другому.
Из плюсов LibreOffice можно отметить поддержку расширений, с помощью которых можно очень сильно улучшить работоспособность программы. MS Office поддерживает только программирование на Basic, тогда, как LibreOffice позволяет использовать Basic, JavaScript, BeanShell и Python, также поддерживается возможность синхронизации документов с облачными хранилищами, такими как Google Drive, OneDrive и так далее. LibreOffice лучше поддерживает работу с большими документами, а также другие возможности.
Из всего выше перечисленного можно сделать вывод, что несмотря на свои недостатки LibreOffice полностью пригоден для использования. А в некоторых случаях, даже оказывается, что LibreOffice лучше MS Office.
5. Интерфейс
Это самое основное отличие офисных пакетов Microsoft Office и LibreOffice, которое мешает многим пользователям перейти к использованию свободного пакета. Интерфейс LibreOffice выглядит очень старомодно, иконки слишком просты, пункты меню находятся не на привычных местах. Libreoffice пытается догнать Microsoft Office, в версии 5.3 был добавлен ленточный интерфейс, но программе все еще далеко до оригинала в плане интерфейса.
Интерфейс Microsoft Office стал стандартом для офисных программ. К такому интерфейсу привыкли большинство пользователей. Даже когда Microsoft поменял стандарты интерфейса в Microsoft Office 2010, многие не захотели переходить на новую версию.
6. Платформы
В плане поддерживаемых платформ сравнение libreoffice и microsoft office, явно на стороне первого. LibreOffice полностью поддерживает Windows, Linux, MacOS, к тому же сейчас разрабатывается порт для Android. Также, недавно была выпущена версия LibreOffice Online, учитывая, что она распространяется с открытым исходным кодом, то ее можно установить на свой сервер.
Micorosoft Office имеет только версию для Windows и MacOS, а также приложение для Android. Онлайн версия MS Office имеет урезанную функциональность и доступна бесплатно на официальном сайте, но вы не можете развернуть ее в своей инфраструктуре. Также есть платная и более полная онлайн версия Office 365.
Выводы
В этой статье мы рассмотрели основные отличия libreoffice или microsoft office. Несложно понять, что Microsoft Office сильно опережает своего конкурента по большинству параметров. Но у него есть два преимущества, это поддержка платформы Linux, а также бесплатность для использования. Очень просто понять что лучше libreoffice или microsoft office, но возможно и крупным корпорациям необходимо применять именно пакет от Microsoft, а обычным пользователям будет достаточно функциональности LibreOffice.
Видео на английском со сравнением Microsoft Office vs LibreOffice:
Оцените статью:
Загрузка…
LibreOffice: основные функции
SUM
Складывает все числа в диапазоне ячеек.
Синтаксис :
СУММ (число1; число2; … число30 )
от числа1 до числа30 — это до 30 чисел или диапазонов чисел, сумма которых должна быть вычислена.
SUM игнорирует любой текст или пустую ячейку в диапазоне или массиве.
Примеры :
СУММ (2; 3; 4)
возвращает 9, потому что 2 + 3 + 4 = 9.
СУММ (B1: B3)
(где ячейки B1, B2, B3 содержат 5, 4, 3) возвращает 12.
СУММ (B3: B4; D3: E4)
возвращает 14
СРЕДНЕЕ
Возвращает среднее значение аргументов, игнорируя текст.
Синтаксис :
СРЕДНИЙ (число1; число2; … число30)
от числа1 до числа30 — это до 30 чисел или диапазонов, содержащих числа.
Примеры :
СРЕДНЕЕ (2; 6; 4)
возвращает 4, среднее из трех чисел в списке.
СРЕДНЕЕ (B1: B3)
, где ячейки B1, B2, B3 содержат 1, 3, а яблоко возвращает 2, среднее значение 1 и 3. Текст игнорируется.
СЧЕТ
Подсчитывает числа в списке аргументов, игнорируя текстовые записи.
Синтаксис :
COUNT (значение1; значение2; … значение30)
от значения1 до значения30 — это до 30 значений или диапазонов, представляющих значения для подсчета.
Примеры :
COUNT (2; 4; 6; «восемь»)
возвращает 3, потому что 2, 4 и 6 — числа («восьмерка» — это текст).
СЧЕТ (B1: B3)
, где ячейки B1, B2, B3 содержат 1, 3, а яблоко возвращает 2.
СЧЕТ (B1: B3)
, где ячейки B1, B2, B3 пусты, возвращает 0.
МАКС
Возвращает максимум из списка аргументов, игнорируя текстовые записи.
Синтаксис :
МАКС (число1; число2; … число30)
от числа1 до числа30 — это до 30 чисел или диапазонов, содержащих числа.
Примеры :
МАКС (2; 6; 4)
возвращает 6, самое большое значение в списке.
МАКС (B1: B3)
, где ячейки B1, B2, B3 содержат 7, 4, а яблоко возвращает 7
МИН.
Возвращает минимум списка аргументов, игнорируя текстовые записи.
Синтаксис :
МИН (число1; число2; … число30)
от числа1 до числа30 — это до 30 чисел или диапазонов, содержащих числа.
Пример :
МИН (2; 6; 4)
возвращает 2, наименьшее значение в списке.
СЦЕПИТЬ
Объединяет несколько текстовых строк в одну.
Синтаксис :
СЦЕПИТЬ (текст1; текст2; … текст30)
Текст 1; Текст 2; … представляют до 30 текстовых отрывков, которые необходимо объединить в одну строку.
Оператор амперсанда и также может использоваться для объединения текста в формуле без функции.
Примеры :
СЦЕПИТЬ («ал»; «тог»; «эфир»)
возвращает всего .
«ал» и «тог» и «эфир»
также полностью возвращается.
СЦЕПИТЬ (A1; A2)
, где ячейка A1 содержит « key », а ячейка A2 содержит « board », возвращает клавиатуру.
База LibreOffice — База знаний MariaDB
LibreOffice Base — это интерфейсный инструмент RDBMS (система управления реляционными базами данных) с открытым исходным кодом для создания и управления различными базами данных.
Подготовка подключения ODBC
Во-первых, обязательно подготовьте соединитель MariaDB / ODBC, как описано в разделе «Соединитель MariaDB / ODBC».
В том числе:
- Загрузите последнюю версию MariaDB Connector / ODBC
- Скопируйте общую библиотеку libmaodbc.so в / usr / lib / [multi-arch]
- Установите пакеты unixodbc, unixodbc-dev, openssh-client, odbcinst
- Создайте файл шаблона для драйвера ODBC. Пример «MariaDB_odbc_driver_template.ini» может быть:
[Драйвер MariaDB ODBC 3.1] |
Описание = Соединитель MariaDB / ODBC v.3.1 |
Driver = /usr/lib/x86_64-linux-gnu/libmaodbc.so |
- Установите драйвер ODBC из файла шаблона, запустив:
$ odbcinst -i -d -f MariaDB_odbc_driver_template.ini
Проверьте успешную установку в файле /etc/odbcinst.ini .
- Создайте файл шаблона для имени источника данных (DSN). Пример «MariaDB_odbc_data_source_template.ini» может быть:
[MariaDB-сервер] |
Описание = сервер MariaDB |
Драйвер = MariaDB ODBC 3.1 Драйвер |
СЕРВЕР = MariaDB |
ПОЛЬЗОВАТЕЛЬ = anel |
ПАРОЛЬ = |
БАЗА ДАННЫХ = test |
PORT = 3306 | PORT = 3306 |