Ubuntu: Преобразуйте OpenOffice Calc в рабочую книгу Excel с помощью CLI

Я должен создать автоматизированный отчет в формате электронной таблицы. К сожалению, кажется, существует простой способ создать эти отчеты с помощью OpenOffice Calc, но верхние управления хотят их в MS формат Excel.

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

3
задан 23.05.2017, 15:41

1 ответ

Да, существует командная строка способ преобразовать между этими форматами файлов. Но макрос должен сначала быть установлен в OpenOffice. Этот макрос возьмет указанное имя файла OpenOffice из командной строки и создаст файл Microsoft Excel (.xls) с тем же именем за исключением расширения файла.

Я протестировал это с OpenOffice 3.2 в Windows, но я ожидаю, что это будет работать над Ubuntu и с OpenOffice 1.1 или позже.

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

Демонстрационная командная строка Ubuntu (непротестированная), который преобразовывает файл электронной таблицы OpenOffice в /home/mortense/temp9/test2.ods к формату Excel, /home/mortense/temp9/test2.xls:

"/usr/lib/openoffice/program/soffice" "macro:///Standard.doConvertToExcel.doConvertToExcel(/home/mortense/temp9/test2.ods)"

Демонстрационная командная строка Windows использовала во время тестирования, которое преобразовывает файл электронной таблицы OpenOffice в D:\temp9\test2.ods к формату Excel, D:\temp9\test2.xls:

"D:\Program Files (x86)\OpenOffice32\OpenOffice.org 3\program\soffice.exe" "macro:///Standard.doConvertToExcel.doConvertToExcel(D:/temp9/test2.ods)"

Макрос упоминается ниже. Вот инструкции по установке:

  1. Запустите OpenOffice Calc.

  2. Скопируйте код в конце этого ответа на буфер обмена. Создайте макрос: меню Tools/Macros/Organise Macros/OpenOffice.org Basic/. Затем расширьтесь до "Моих Макросов/Стандарта /" так, чтобы "Стандарт" был выбран. Нажмите кнопку "New".

  3. Щелкните правой кнопкой по вкладке в нижнем левом углу и выборе: вставьте/ОСНОВНЫМИ Модуль. Щелкните правой кнопкой по созданному модулю, выбор "Переименовывают" и вводят "doConvertToExcel". Нажмите в области редактирования (чтобы установить фокус там), выбрать все (Ctrl + A) и вставка в коде. Закройте окно (например, с Ctrl + W).Именно!


Код для макроса:

Sub doConvertToExcel( aFile )
   URL = ConvertToURL( aFile )

   ' Open the document.
   ' Just blindly assume that the document is of a type that OOo will
   '  correctly recognize and open -- without specifying an import filter.
   doc = StarDesktop.loadComponentFromURL( URL, "_blank", 0, Array(_
            MakePropertyValue( "Hidden", True ),_
            ) )

   outFile = Left( aFile, Len( aFile ) - 4 ) + ".xls"

   outURL = ConvertToURL( outFile)

   ' List of filters: <http://www.oooforum.org/forum/viewtopic.phtml?t=3549> and
   '                  <http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options>.
   '
   ' Save the document using a filter.
   doc.storeToURL( outURL, Array(_
                              MakePropertyValue( "FilterName", "MS Excel 97" ),_
                 )

   doc.close( True )
End Sub


Function MakePropertyValue( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue
   Dim oPropertyValue As New com.sun.star.beans.PropertyValue
   If Not IsMissing( cName ) Then
      oPropertyValue.Name = cName
   EndIf
   If Not IsMissing( uValue ) Then
      oPropertyValue.Value = uValue
   EndIf
   MakePropertyValue() = oPropertyValue
End Function
5
ответ дан 08.12.2019, 00:08

Теги

Похожие вопросы