libreoffice basic автодополнение кода
Выбор редакции
Топ-30 лучших фильмов про.
Топ-10 лучших фильмов октября.
Топ-20 лучших сериалов про.
Создание автоматически заполняемого шаблона для писем в LibreOffice Writer
Создание писем-рассылок в программе LibreOffice Writer
При использовании пакета LibreOffice, обычные пользователи зачастую даже не догадываются про все возможности, которые предоставляет этот пакет. Набрать текст, оформить его в соответствии с некоторыми требованиями, при необходимости добавить фото и распечатать получившийся документ – вот и все, чем ограничивается работа с текстовым редактором LibreOffice Writer. А его возможности, и в самом деле, гораздо шире. И ничуть не уступают тем, которые есть у самых именитых платных офисных пакетов.
Одна из таких возможностей – создание нового текстового документа, путем автоматического занесения в него уже имеющейся информации из файла электронных таблиц.
Ставим задачу
Допустим, что есть необходимость создать по определенному образцу большое количество одинаковых документов, и лишь в некоторых местах этих писем следует внести уникальные данные:
Рис. 1. Образец письма
Как видно на рисунке № 1, подавляющая часть этого письма должна остаться без изменений. И только в местах, которые на рисунке отмечены серым фоном, должна быть внесена информация уникальная для каждого адресата.
Подготавливаем файлы для слияния
Для того чтобы получить на выходе такие письма (их может быть и несколько сотен), необходимо провести небольшую предварительную работу. В самом обычном редакторе электронных таблиц LibreOffice Calc надо будет создать небольшую базу данных, в которую внести информацию про каждого выпускника.
Рис. 2. Созданная база данных в электронной таблице
Обязательное условие для такой таблицы – в первой строке необходимо указать названия полей. В дальнейшем это позволит правильно подключать к нужным местам необходимую информацию.
Предварительная работа, действительно, не такая простая (список может быть достаточно объемный). Но, единожды создав такой список выпускников (клиентов, товаров, адресов, спецификаций) и постоянно его корректируя, можно создавать сотни писем несколькими щелчками мышки.
Кроме файла электронных таблиц, создаем текстовый документ необходимого оформления, оставляя незаполненными те места, в которых будем в дальнейшем заносить информацию из электронных таблиц.
Рис. 3. Текстовый шаблон для подключения базы данных
Созданные два файла (текстовый и электронных таблиц) сохраняем в каком-нибудь каталоге (там, где можно будет их легко отыскать).
Устанавливаем связи между файлами
Чтобы в текстовом редакторе воспользоваться информацией, которая хранится в электронных таблицах, необходимо в первую очередь установить связи между этими файлами. Для этого необходимо в текстовом редакторе последовательно выполнить команду: Файл –> Мастер –> Источники данных адресов (см. рисунок).
Рис. 4. Запускаем мастер слияния документов
Разобраться с меню мастера несложно. В появившемся окошке выбираем пункт «Другой внешний источник данных».
Рис. 5. Выбираем способ подключения
Потом нажимаем на кнопку в центре нового окна «Настройки». И в большом контекстном меню выбираем пункт «Электронная таблица».
Рис. 6. Выбираем тип подключаемого файла
После всего этого указываем путь к тому файлу, где хранится информация о выпускниках. На этом этапе можно воспользоваться кнопкой «Тестовое соединения» и убедиться, что все сделано правильно. Назначение полей на этом этапе можно не проводить (просто нажать кнопку «Далее»), а вот имя адресной книги задаем «Выпускники». И обязательно указываем в «Расположение» путь, где автоматически будет создан файл LibreOffice Base.
Рис. 7. Завершаем подключение
Проверить, что все прошло правильно, можно, нажав на кнопку F4, или отыскав в меню «Стандартная» кнопку «Источники данных». В появившемся окне можно проконтролировать правильность подключения.
Рис. 8. Делаем проверку
Заполняем поля, используя связь между файлами
Внедрить необходимые поля на свои места нужно, используя команду главного меню: Вставка –> Поля –> Дополнительно (или нажать комбинацию клавиш Ctrl+F12).
Рис. 9. Вызываем меню для установки полей
Поле будет вставлено именно туда, где в данный момент находится курсор. Поэтому устанавливаем его после слова «Уважаемый,» (не забываем отступить один пробел). И на закладке «База данных», выбрав необходимое подключение и нужную таблицу, нажимаем кнопку «Вставить».
Рис. 10. Устанавливаем поля
Если все сделано правильно и аккуратно, должно получиться вот что:
Рис. 10. Готовый документ с подключенными полями
Создаем окончательный документ для рассылки
Финальный документ получаем, выполнив команду: Сервис –> Рассылка писем. В появившемся окне последовательно справляемся со всеми пунктами, несколько раз нажимая на кнопку «Далее». В итоге получается текстовый файл, в котором столько страниц, сколько было заполнено строчек в базе данных электронных таблиц. И на каждой странице вместо и т.д. будет проставлена информация из таблицы.
Рутина на потоке. Осваиваем простейшие приемы автоматизации работы с LibreOffice
Содержание статьи
warning
Перед запуском первого макроса LibreOffice может потребовать установить JRE (Java Runtime Environment). Скачать инсталлятор можно здесь.
Что такое LibreOffice
Еще LibreOffice можно установить на сервер и запускать в браузере. Для этого сервер должен управляться Linux и на нем должна быть установлена библиотека GTK3 (она нужна для трансляции графики в HTML5).
Программный пакет включает в себя следующие компоненты:
Специально для тебя мы сделали подборку исходников макросов для LibreOffice. Ищи их в репозиториях GitHub к этому номеру.
.bash и LibreOffice
Создавать и редактировать документы LibreOffice можно напрямую из shell, используя LibreOffice API. В качестве примера сконвертируем ODT-файл в docx:
Языки, на которых можно написать макрос
Для написания макросов на этом языке не нужно устанавливать никаких дополнений. Пакет LibreOffice Basic поставляется с обширной коллекцией примеров кода для разных ситуаций, и этот способ автоматизации отлично документирован на сайте проекта. Большая часть нашей статьи посвящена этому способу.
Открываем менеджер макросов
Хакер #188. Ботнеты, изменившие мир
Этот способ достался в наследство от OpenOffice (проект курировала компания Oracle). BeanShell — это скриптовый язык, созданный для тестирования и отладки Java-программ. Для написания макросов на этом языке необходимо изменить установить соответствующее расширение goo.gl/OzHo1W.
Кнопка Edit неактивна. С Python все не так просто
Для того чтобы автоматизировать работу с LibreOffice на Python, нужно установить соответствующее дополнение:
Если ты используешь LibreOffice под Windows, тогда надо установить это дополнение через Tools → Options → LibreOffice → General.
После установки можно редактировать Python-макросы из встроенного редактора.
Java Script
C JS ситуация аналогична ситуации с Python. Для выполнения макросов требуется установить libreoffice-script=provider-js.
Соответственно, для Windows способ установки также аналогичен предыдущему пункту.
Как и в MS Office, в LibreOffice есть возможность записывать макросы. Это можно сделать через пункт меню Record Macro.
Можно настроить несколько способов вызова макроса:
Примеры макросов:
В принципе, на LibreOffice Basic можно имитировать любые действия пользователя. Для наглядности приведем примеры автоматизаций для различных компонентов LibreOffice.
Hello world
Пример простейшего макроса для вывода сообщения с текстом:
SpreadSheet
Этот код красит первую ячейку во втором листе в книге в черный цвет:
UNO — компонентная модель для взаимодействия объектов в OpenOffice и LibreOffice. Для программного управления этой моделью существуют UNO API. С помощью его производится обращение к LibreOffice из сторонних скриптов (Python, JS и BeanShell).
Presentation
Макрос для создания нового слайда в презентации:
Drawing
Этот макрос удаляет все линии с рисунка. Когда это может пригодиться? Допустим: нарисовали 30-страничную схему, где линиями соединены все объекты. Потом пришел твой шеф и сказал: «Нафиг линиями? И без них все понятно!»
Аналогичным образом можно удалить все стрелочки или другие фигуры.
Автоматизация OpenOffice
Если ты олдфаг, привык к OpenOffice и не хочешь менять его не на что‑то другое, это не лишает тебя возможности автоматизировать свою работу. Многие примеры из этой статьи будут работать в этом пакете. А документации по автоматизации OpenOffice гораздо больше, чем по LibreOffice. Вот ссылка на отличный FAQ, в котором есть ответы на все вопросы по автоматизации OpenOffice:
Database
С помощью макросов можно выполнять запросы к базам данных (предварительно необходимо установить соединение с database-сервером):
Pandoс
Утилита для обработки текстовых файлов. Она может конвертировать Markdown, LaTeX и HTML в целый калейдоскоп различных форматов. Вот некоторые из них:
Заключение
LibreOffice Basic синтаксически идентичен VBA и всем остальным разновидностям бейсика, с которыми многим из нас пришлось столкнуться в школе и институте. Но не надо ставить LOB на один уровень с его братом от Microsoft. Во‑первых, редактор макросов в LB гораздо дружественнее и терпимее к промахам пользователя. В частности, в случае ошибки не надо гуглить ее код по форумам в стиле «информатика для школьника», чаще всего понять, что не так, можно, не выходя из окна с кодом. Во‑вторых, выполнение макроса никогда не парализует работу компьютера (как это иногда может сделать бесконечный цикл в VBA). А в‑третьих, благодаря возможностям UNO API автоматизировать можно почти все что угодно.
Введение
В настоящее время у человечества стоит задача автоматизировать и роботизировать наиболее опасные, трудоемкие, не интересные виды человеческой деятельности. Наиболее актуальна роботизация при выполнении боевых задач, видов деятельности, сопряженных с риском для жизни человека.
Программирование является ключевым звеном в процессе создания высокопроизводительных автоматизированных производств, роботов, высокотехнологичных и высокодоходных изделий оборонного и гражданского назначения.
Особую ценность имеет возможность создания в бесплатной среде новых уникальных программ, собираемых из широкодоступных программ и библиотек на слабооборудованных рабочих местах или в домашних условиях.
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 сервиса) отсортированы по алфавиту:
Программирование 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.
Сохранив форму вызываем ее на выполнение и наблюдаем работу макроса. Или не наблюдаем. Все дело в защите которая в связи с участившимися вредоносными макросами отключает их работу по умолчанию.
Если тем вызовет хоть какой-то интерес готов продолжить более конкретными темами.