Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

29 Ноябрь 2021, 15:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Экспорт библиотек: выбор формата файла  (Прочитано 1790 раз)
0 Пользователей и 1 Гость смотрят эту тему.
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 752



« Стартовое сообщение: 7 Июнь 2021, 14:57 »

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

Формат XML (по умолчанию).
Можно ли экспортировать в виде обычного текста (plain text)?

Например:
For Each libname in BasicLibraries.ElementNames  'or in DialogLibraries
    BasicLibraries.exportLibrary …


<oLibContainer>.exportLibrary(Name$, URL$, Handler As Object)

Имя библиотеки получаем из массива имён, путь – мой. Вместо <Handler> передаю Nothing. Но для формата файла параметра нет.

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


* BA2955D9-019F-4274-A804-941CEEAD02AC.jpeg (19.29 Кб, 295x138 - просмотрено 16 раз.)
« Последнее редактирование: 7 Июнь 2021, 15:29 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.2.2.2 Community
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 592


WWW
« Ответ #1: 7 Июнь 2021, 15:36 »

Третий параметр предназначен для интерактивного взаимодействия с пользователем. Nothing - правильный выбор (для Basic).
Список модулей библиотеки можно получить с помощью конструкции oLib.getElementNames, текст модуля oLib.GetByName(moduleName). Текст каждого модуля можно сохранить в отдельном файле стандартными средствами (через SimpleFileAccess).
« Последнее редактирование: 7 Июнь 2021, 15:38 от sokol92 » Записан

Владимир.
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 752



« Ответ #2: 7 Июнь 2021, 17:38 »

Да, спасибо. Модуль читается… Всё остальное есть у Питоньяка в сети.
« Последнее редактирование: 7 Июнь 2021, 23:30 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.2.2.2 Community
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 752



« Ответ #3: 7 Июнь 2021, 23:19 »

Код:
Dim name$, code$  'module name & source code (text)
With BasicLibraries.Standard
For Each name In .ElementNames
code = .getByName(name)
Next
End With

через SimpleFileAccess
Код:
Sub SaveFile(sFullName$, sContent$)
Dim oSimpleFileAccess As Object, oOutputStream As Object

oSimpleFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oOutputStream = createUNOService("com.sun.star.io.TextOutputStream")
oOutputStream.setOutputStream(oSimpleFileAccess.openFileWrite(sFullName))
oOutputStream.writeString(sContent)
End Sub
Примечание. Хотя кода и немного, но воспринимается тяжело: без примеров не воспроизвести (не очевидно). В Excel как-то не было таких проблем...

Кстати, код выше вот так (с оператором With) выдал ошибку
Код:
With createUNOService("com.sun.star.io.TextOutputStream")
.setOutputStream(oSimpleFileAccess.openFileWrite(sFileName))
.writeString(sContent)
End With
« Последнее редактирование: 7 Июнь 2021, 23:55 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.2.2.2 Community
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!