Якунина м в практическое использование libreoffice basic

Содержание
  1. Программирование LibreOffice Base. Часть 1
  2. LibreOffice
  3. Содержание
  4. Общая информация
  5. Java в LibreOffice
  6. Подключение пользовательского словаря
  7. Установка ударения в слове
  8. Сквозной поиск и замена
  9. Авто обновление ссылок на страницы в документе
  10. Автоматическое обновление до последней версии LibreOffice
  11. Определение своих горячих клавиш
  12. Связь LibreOffice с MediaWiki
  13. Полезные ссылки
  14. LibreOffice
  15. Содержание
  16. Общая информация
  17. Java в LibreOffice
  18. Подключение пользовательского словаря
  19. Установка ударения в слове
  20. Сквозной поиск и замена
  21. Авто обновление ссылок на страницы в документе
  22. Автоматическое обновление до последней версии LibreOffice
  23. Определение своих горячих клавиш
  24. Связь LibreOffice с MediaWiki
  25. Полезные ссылки
  26. Программирование LibreOffice Base. Часть 3
  27. Введение
  28. 1 OpenOffice Basic и LibreOffice Basic
  29. 2 Мой первый макрос: “ Hello World ” [1]
  30. 3 Левый Alt нажать одновременно с F11 для открытия ООо Basic IDE
  31. 4 Оператор REM или апостроф ‘ перед комментарием
  32. 5 Циклы Do. Loop
  33. 6 Группировка текста программ [1]
  34. 7 Передача параметров процедурам и функциям
  35. 8 Необязательные (Optional) параметры
  36. 9 OpenOffice.org и LibreOffice API
  37. 9.1 Справочная информация по API OpenOffice.org и LibreOffice
  38. 9.2 Создание и обращение к объектам
  39. 9.3 Сервисы LibreOffice Basic
  40. 9.4 Список всех сервисов, поддерживаемых 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.

Перед вами появится выбор место хранения макросов. Наиболее логичным будет хранить макросы в файле базы данных, т.к. их в этом случае можно будет распространять одним файлом.

Создадим самый простой макрос:

Далее создадим форму Forms->Create Form In Design View. И добавим в конструкторе формы элемент кнопка. После создания кнопки распахнем палитру свойств кнопки, нажав правую кнопку мыши и далее последовательно выбрав Control->Execute Action->Macro->Имя библиотеки->Hello.

Сохранив форму вызываем ее на выполнение и наблюдаем работу макроса. Или не наблюдаем. Все дело в защите которая в связи с участившимися вредоносными макросами отключает их работу по умолчанию.

Если тем вызовет хоть какой-то интерес готов продолжить более конкретными темами.

Источник

LibreOffice

Содержание

Общая информация

Документация к OpenOffice в большинстве случаев подходит и к LibreOffice, т.к. проекты пока не слишком разошлись (см ссылки внизу статьи). То же самое можно сказать и про настройки, поэтому все написанные здесь решения можно относить к обоим проектам.

Java в LibreOffice

«Could not create Java implementation loader«

то нужно доустановаить Java.

Подключение пользовательского словаря

Словарь LibreOffice далеко не полный, поэтому имеет смысл создать свой и использовать его и пополнять на всех своих рабочих местах.

Где хранятся словари можно посмотреть в параметрах:

Здесь же можно добавить другие пути к словарям, либо создать ссылки в указанном здесь каталоге на дополнительные файлы со словарями и указать путь, где будут создаваться новые словари.

Так по умолчанию пользовательские словари (для пользователя user) хранятся в каталоге:

Пользовательских словарей может быть сколько угодно. Их можно создавать тематически и в разных рабочих местах подключать разные словари. Сделав так на всех компьютерах будем иметь общий набор словарей, пополняемый с любого места.

После создания ссылок LibreOffice необходимо перезапустить.

Подключенные словари можно посмотреть в любом из приложений LibreOffice и OpenOffice (Writer, Calc и т.д.):

Отмечаем галочками те, что будем использовать.

Установка ударения в слове

Для добавления знака ударения нужно установить курсор после буквы, на которую должно падать ударение и вставить специальный символ. Выбрать в меню: Вставка → Специальные символы. В появившемся окне в списке «Подмножество» выбрать «Дополнительные диакритические знаки». Символы ударения U+0300 (уда̀р) или U+0301 (уда́р).

К сожалению не во всех шрифтах диакритические знаки определены (просто не нарисованы).

Гласные под ударением (над ё ударение не ставится, т.к. она всегда под ударением): А́ а́, Е́ е́, И́ и́, О́ о́, У́ у́, Ы́ ы́, Э́ э́, Ю́ ю́, Я́ я́

Сквозной поиск и замена

В LibreOffice для поиска и замены можно использовать регулярные выражения, с помощью которых можно искать по шаблону, в том числе служебные символы и стили.

500px LibreOffice. %D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9 %D0%BF%D0%BE%D0%B8%D1%81%D0%BA %D0%B8 %D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B0

Очень удобное расширение для этого AltSearch (по-русски, скачать с СисадминВики), позволяющее сохранять последовательность замен в макрос.

Пример 2: Найти все выражения вида:

Пример 3: Найти все выражения вида: [#fn12 12]

Пример 4: Найти в тексте все слова со стилем «Выделение», затем: (1) изменить стиль на «Базовый», (2) выделить найденный текст курсивом:

Авто обновление ссылок на страницы в документе

Чтобы при переносе текста сохранялись актуальными ссылки на главы, изображения, таблицы или другие объекты документа нужно использовать перекрёстные ссылки:

Автоматическое обновление до последней версии LibreOffice

В LTS версии Ubuntu не входят новые версии программ, пока они не будут признаны стабильными. Но их всё равно можно установить подключив нужный репозиторий PPA. Для LibreOffice это делается так:

Если же мы хотим установить какую то конкретную версию но нужно подключать соответствующее PPA. Перед установкой нужно удалить старую версию. Например для версии 5.4:

Определение своих горячих клавиш

Связь LibreOffice с MediaWiki

Полезные ссылки

Источник

LibreOffice

Содержание

Общая информация

Документация к OpenOffice в большинстве случаев подходит и к LibreOffice, т.к. проекты пока не слишком разошлись (см ссылки внизу статьи). То же самое можно сказать и про настройки, поэтому все написанные здесь решения можно относить к обоим проектам.

Java в LibreOffice

«Could not create Java implementation loader«

то нужно доустановаить Java.

Подключение пользовательского словаря

Словарь LibreOffice далеко не полный, поэтому имеет смысл создать свой и использовать его и пополнять на всех своих рабочих местах.

Где хранятся словари можно посмотреть в параметрах:

Здесь же можно добавить другие пути к словарям, либо создать ссылки в указанном здесь каталоге на дополнительные файлы со словарями и указать путь, где будут создаваться новые словари.

Так по умолчанию пользовательские словари (для пользователя user) хранятся в каталоге:

Пользовательских словарей может быть сколько угодно. Их можно создавать тематически и в разных рабочих местах подключать разные словари. Сделав так на всех компьютерах будем иметь общий набор словарей, пополняемый с любого места.

После создания ссылок LibreOffice необходимо перезапустить.

Подключенные словари можно посмотреть в любом из приложений LibreOffice и OpenOffice (Writer, Calc и т.д.):

Отмечаем галочками те, что будем использовать.

Установка ударения в слове

Для добавления знака ударения нужно установить курсор после буквы, на которую должно падать ударение и вставить специальный символ. Выбрать в меню: Вставка → Специальные символы. В появившемся окне в списке «Подмножество» выбрать «Дополнительные диакритические знаки». Символы ударения U+0300 (уда̀р) или U+0301 (уда́р).

К сожалению не во всех шрифтах диакритические знаки определены (просто не нарисованы).

Гласные под ударением (над ё ударение не ставится, т.к. она всегда под ударением): А́ а́, Е́ е́, И́ и́, О́ о́, У́ у́, Ы́ ы́, Э́ э́, Ю́ ю́, Я́ я́

Сквозной поиск и замена

В LibreOffice для поиска и замены можно использовать регулярные выражения, с помощью которых можно искать по шаблону, в том числе служебные символы и стили.

500px LibreOffice. %D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9 %D0%BF%D0%BE%D0%B8%D1%81%D0%BA %D0%B8 %D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B0

Очень удобное расширение для этого AltSearch (по-русски, скачать с СисадминВики), позволяющее сохранять последовательность замен в макрос.

Пример 2: Найти все выражения вида:

Пример 3: Найти все выражения вида: [#fn12 12]

Пример 4: Найти в тексте все слова со стилем «Выделение», затем: (1) изменить стиль на «Базовый», (2) выделить найденный текст курсивом:

Авто обновление ссылок на страницы в документе

Чтобы при переносе текста сохранялись актуальными ссылки на главы, изображения, таблицы или другие объекты документа нужно использовать перекрёстные ссылки:

Автоматическое обновление до последней версии LibreOffice

В LTS версии Ubuntu не входят новые версии программ, пока они не будут признаны стабильными. Но их всё равно можно установить подключив нужный репозиторий PPA. Для LibreOffice это делается так:

Если же мы хотим установить какую то конкретную версию но нужно подключать соответствующее PPA. Перед установкой нужно удалить старую версию. Например для версии 5.4:

Определение своих горячих клавиш

Связь LibreOffice с MediaWiki

Полезные ссылки

Источник

Программирование LibreOffice Base. Часть 3

Сегодня мы рассмотрим использование диалоговых окон при редактировании данных в LibreOffice Base (OpenOffice Base). Как мы выяснили в предыдущих сообщениях, Форма LibreOffice Base (OpenOffice Base) — это фактически экземпляр текстового редактора LibreOffice (OpenOffice) Writer. Для организации оконного интерфейса внутри Формы используется Диалоги — которые удобно создаются во встроенным визуальном интерфейсе, но не имеют поддержки для связи с таблицами базы данных. Эту связь будем организовывать макросами OO Basic.

Начнем по-порядку. Создадим две таблицы в базе данных:

products
— id (целое, первичный ключ)
— name (строка)

orders
— id (целое, первичный ключ)
— productId (целое)
— count (целое)
— date (тип данных Дата)

Создадим форму orders, добавим в форму элемент Form с именем orders. А также Table Control с источником данных orders. Как это сделать рассматривалось в Части 2 серии сообщений.

При задании свойств колонки date обратите, пожалуйста, внимание на отмеченные на рисунке стрелками свойства, которые позволяют отображать данные в нужном формате и использовать выпадающий календарь для выбора конкретной даты.

image loader

Теперь прямо в таблице можно добавлять и изменять данные. До определенного момента это удобно, похоже на привычную работу клиента с табличным процессором. Но в какой-то момент начинаются проблемы, также характерные для работы с табличными процессорами. Данные можно изменить случайно, даже не заметив этого. А заметив невозможно откатить все как было. Места для новых колонок мало, и может образоваться неприятная горизонтальная прокрутка. Заголовки колонок также имеют ограничение по размеру (иначе не поместятся по горизонтали), и это не позволяет дать подробное описание данных.

В качестве полумеры можно рядом с таблицей разместить обычные поля для ввода данных (Text Control, Numeric Control и т.д.). В качестве источника данных задать соответствующие поля таблицы orders и все будет работать. При навигации по набору данных будут меняться данные в полях ввода. При изменении данных в полях ввода будут меняться данные в таблице базы данных. Но выглядеть это решение будет не очень красиво.

Поэтому реализуем такой функционал при помощи Диалогов. У Диалогов есть одно существенное ограничение. Поля ввода Диалогов не связаны с таблицей базы данных. Поэтому заполнение полей ввода Диалога из таблицы базы данных, и сохранение полей ввода в таблицу базы данных нужно будет делать макросом OO Basic. Впрочем, это и хорошо, т.к. позволяет рассмотреть возможности программирования OO Basic (до этого в моих сообщениях была описана работа только со средой, но все это было подготовкой к сегодняшнему сообщению).

Чтобы вызвать на экран редактор Диалогов, необходимо выбрать в меню Tools->Macros->Organize Macros->LibreOffice Basic->Organizer->Dialog->New|Edit|Delete. Хотелось бы иметь более быстрый способ добраться до этого редактора. После чего откроется редактор диалога (увы, не самый удобный), в котором мы создадим поля с именами полей таблицы базы данных. Как Вы помните Диалоги не связываются автоматически с таблицами базы данных поэтому мы напишем макрос, который сделает это. И в качестве соглашения об именовании определим имена полей ввода и полей таблицы базы данных одинаковыми.

Редактор с готовой формой будет выглядеть примерно так:

image loader

Далее, добавим в Диалог две кнопки. Имена кнопкам дадим произвольные, но начинающиеся с подчеркивания, чтобы отличить их от полей базы данных. Каждой кнопке в палитре свойств можно задать действие. Зададим одой кнопке действие OK — она закроет Диалог с подтверждением действия. А второй — Cancel — она закроет диалог без подтверждения действия.

Закроем редактор Диалогов, и вернемся в редактор Формы. Создадим кнопку, вызывающую диалог и назначим ей процедуру-обработчик Order_Edit, в которой будем заполнять Диалог из таблицы базы данных FromBaseToDialog(oForm, oDialog), и сохранять данные из Диалога таблицу базы данных FromDialogToBase(oDialog, oForm).

Предполагается, что Диалог был сохранен в библиотеке Standard под именем dialogOrder. Естественно, Вы можете выбрать другие имена. Имена контролов, начинающиеся с подчеркивания пропускаются и не обрабатываются. Также не обрабатываются имена, начинающиеся с Label, которые используются для текстовых заголовков полей.

Источник

Введение

В настоящее время у человечества стоит задача автоматизировать и роботизировать наиболее опасные, трудоемкие, не интересные виды человеческой деятельности. Наиболее актуальна роботизация при выполнении боевых задач, видов деятельности, сопряженных с риском для жизни человека.

Программирование является ключевым звеном в процессе создания высокопроизводительных автоматизированных производств, роботов, высокотехнологичных и высокодоходных изделий оборонного и гражданского назначения.

Особую ценность имеет возможность создания в бесплатной среде новых уникальных программ, собираемых из широкодоступных программ и библиотек на слабооборудованных рабочих местах или в домашних условиях.

1 OpenOffice Basic и LibreOffice Basic

OpenOffice Basic и Libre O ffice Basic ранее назывались StarOffice Basic, StarBasic, OpenOffice.org Basic, OOo Basic. LibreOffice Basic в настоящее время развивается, опережая OpenOffice Basic, поэтому в дальнейшем будем преимущественно говорить о Libre O ffice Basic.

OOo Basic схож с другими диалектами Basic, например, с Visual Basic for Application может иметь одинаковый программный код в широкой области применения.

OOo Basic позволяет программировать в пакетах офисных программ OpenOffice и LibreOffice, а также автоматизировать управляющие этими пакетами действия. ООо Basic не позволяет создавать самостоятельно выполняемые программы с расширением exe.

— легок для изучения;

— поддерживает объекты COM ( ActiveX ) и расширенные возможности GUI в OpenOffice ;

— есть сообщество пользователей в Интернет;

— это решение для нескольких платформ (Linux, Windows и т.д.).

Кроссплатформенность (совместимость с 32/64-битными системами, поддержка таких самых популярных операционных систем, как Microsoft Windows, GNU/Linux и Mac OS X), свободное распространение для бесплатного использования в частных и коммерческих целях, открытый исходный код придают Libre O ffice Basic особую ценность.

В справке по OpenOffice или LibreOffice, вызываемой при нажатии на F1, в разделе «Макросы и программирование» можно получить львиную долю информации о программировании на OOo Basic.

2 Мой первый макрос: “ Hello World ” [1]

3 Левый Alt нажать одновременно с F11 для открытия ООо Basic IDE

4 Оператор REM или апостроф ‘ перед комментарием

‘П рограмма начинается оператором Sub с именем Main

REM К омментарий для людей программа не выполняет

Print » REM или ‘ перед комментарием » ‘ Выведем

‘ Следующий оператор завершает программу

End Sub REM программа завершилась

REM — это сокращение слова remark (комментарий).

5 Циклы Do. Loop

Цикл Do While УсловиеLoop п роверяет перед каждым выполнением цикла истинно ли условие и выполняться пока (While) истинно условие:

Цикл Do Until УсловиеLoop выполняется до (Until) истинности условия. Цикл выполняется, если условие ложно:

Цикл Do … Loop While Условие выполняется по крайней мере один раз и продолжает выполняться пока (While) истинно условие:

Loop While Условие

Цикл Do … Loop Until Условие выполняется один или большее число раз до (Until) наступления момента истинности условия

6 Группировка текста программ [1]

Листинг 3.2 : “Hello world” с использованием процедуры и функции.

Function HelloWorldString () As String

HelloWorldString = «Hello World»

Каждый модуль (m odule) содержит набор процедур (функций). Библиотека (Library) содержит набор модулей. Документ (document) может содержать библиотеку или несколько библиотек. Библиотека может существовать также на уровне Приложения (application level), такого как OOo Writer.

7 Передача параметров процедурам и функциям

П роцедуры и ф ункции могут получать несколько параметров. После имени процедуры или функции передаваемые параметры заключаются в круглые скобки, н апример,

‘ Параметр A теперь имеет значение 20

Sub ChangeValue ( TheValue As Integer )

Вы можете также передать параметр по значению, если Вы не хотите, чтобы последующие изменения параметра затронули значение, которое было передано первоначально. Чтобы определить, что параметр нужно передать по значению, удостоверьтесь, что ключевое слово ByVal предшествует объявлению переменной в заголовке функции.

В предыдущем примере, если мы заменяем функцию ChangeValue на функцию

Sub ChangeValue ( ByVal TheValue As Integer )

тогда переменная A остается незатронутой этим изменением. После вызова функции ChangeValue, переменная A сохраняет значение 10.

Примечание Метод для передачи параметров процедурам и функциям в OOo Basic фактически идентичен VBA. По умолчанию, параметры передаются по ссылке. Чтобы передавать параметры по значению, используйте ключевое слово ByVal. В VBA, Вы можете также использовать ключевое слово ByRef, чтобы вынудить параметр быть переданным по ссылке. OOo Basic не поддерживает это ключевое слово, потому что оно уже используется по умолчанию в процедурах OOo Basic.

8 Необязательные (Optional) параметры

Функции и процедуры можно вызвать, только если все необходимые параметры передаются во время вызова. OOo Basic позволяет Вам определять параметры как необязательные, то есть, если соответствующие значения не включены в запрос, OOo Basic передает пустой параметр. В примере [ 9 ; стр. 24 ]

параметр A обязателен, тогда как параметр B является необязательным. Функция IsMissing проверяет, передан ли параметр или нет.

Dim B_Local As Integer

‘ Проверка, присутствует ли параметр B фактически

If Not IsMissing ( B ) Then

B_Local = B ‘ Параметр B присутствует

Пример сначала проверяет, передали ли параметр B и, в случае необходимости, передает этот параметр внутренней переменной B_Local. Если соответствующий параметр отсутствует, то значение по умолчанию (в этом случае, значение 0) передается B_Local, а не переданному параметру.

Примечание Ключевое слово ParamArray присутствующее в VBA не поддерживается в OOo Basic.

9 OpenOffice.org и LibreOffice API

OpenOffice и LibreOffice API (application programming interface) не является языком программирования, он только интерфейс программирования приложений в виде готового набора методов, предлагаемых сервисом для создания программ. OpenOffice и LibreOffice API содержат много сервисов (Services) и объектов (Objects).

Способы использования StarBasic API в программировании на каком-то языке могут без особых усилий применяться для интеграции StarBasic API с другими поддерживаемыми языками программирования ( Basic, C, C++, Java, Python).

9.1 Справочная информация по API OpenOffice.org и LibreOffice

Документация о сервисах, их свойствах, методах и интерфейсах сосредоточена в справочнике по OpenOffice.org API на сайте www.openoffice.org по ссылке:

Онлайн документация по Libreoffice API расположена по адресу:

9.2 Создание и обращение к объектам

Объект ThisComponent является глобальной переменной, предоставляющей доступ к активному документу. Следующая программа объявляет активный документ OpenOffice или LibreOffice как объект Doc:

Dim Doc As Object ‘Doc объявляется как объект

Doc = ThisComponent ‘ Активный документ получает имя Doc

9.3 Сервисы LibreOffice Basic

Все сервисы OOo Basic начинаются с com.sun.star и составляют большой перечень, из которого наиболее важные:

— com.sun.star.drawing содержит все сервисы, используемые для рисования линий, прямоугольников, кругов и т.д. (collects all services used for drawing line, rectangles, circles etc).

— com.sun.star.frame содержит сервисы Desktop(). Вы можете использовать этот сервис для открытия существующих документов или создания новых (contains the Desktop() service. You use this service to open existing documents or create new ones).

— com.sun.star.presentation предоставляет все сервисы для создания и работы с презентациями (provides all services to create and work with presentations).

— com.sun.star.sheet содержит сервисы для электронных таблиц. Сервис SpreadheetDocument() используется для работы с листами электронных таблиц (contains services for spreadsheets. Its SpreadheetDocument() service is used to work with spreadsheets).

— com.sun.star.table предоставляет все сервисы для таблиц в текстовых документах и электронных таблицах (provides all services for tables in text documents and spreadsheets).

— com.sun.star.text группы сервисов, связанных с текстовыми документами. Сервис TextDocument() предоставляет все интерфейсы, необходимые для работы с текстовыми документами (groups the services dealing with text documents. The TextDocument() service provides all interfaces needed to work with text documents).

9.4 Список всех сервисов, поддерживаемых LibreOffice Basic

Все поддерживаемые LibreOffice сервисы (1022 сервиса) отсортированы по алфавиту:

Источник

Adblock
detector