Экспорт библиотек: выбор формата файла

Автор eeigor, 7 июня 2021, 14:57

0 Пользователи и 1 гость просматривают эту тему.

eeigor

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

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

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


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

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

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

sokol92

#1
Третий параметр предназначен для интерактивного взаимодействия с пользователем. Nothing - правильный выбор (для Basic).
Список модулей библиотеки можно получить с помощью конструкции oLib.getElementNames, текст модуля oLib.GetByName(moduleName). Текст каждого модуля можно сохранить в отдельном файле стандартными средствами (через SimpleFileAccess).
Владимир.

eeigor

#2
Да, спасибо. Модуль читается... Всё остальное есть у Питоньяка в сети.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

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


Цитата: sokol92 от  7 июня 2021, 15:36через 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
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community