Я должен создать автоматизированный отчет в формате электронной таблицы. К сожалению, кажется, существует простой способ создать эти отчеты с помощью OpenOffice Calc, но верхние управления хотят их в MS формат Excel.
Поскольку эти отчеты состоят в том, чтобы быть созданы и посланы по электронной почте автоматически, существует ли хорошая, командная строка способ преобразовать между этими форматами файлов?
Да, существует командная строка способ преобразовать между этими форматами файлов. Но макрос должен сначала быть установлен в 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)"
Макрос упоминается ниже. Вот инструкции по установке:
Запустите OpenOffice Calc.
Скопируйте код в конце этого ответа на буфер обмена. Создайте макрос: меню Tools/Macros/Organise Macros/OpenOffice.org Basic/. Затем расширьтесь до "Моих Макросов/Стандарта /" так, чтобы "Стандарт" был выбран. Нажмите кнопку "New".
Щелкните правой кнопкой по вкладке в нижнем левом углу и выборе: вставьте/ОСНОВНЫМИ Модуль. Щелкните правой кнопкой по созданному модулю, выбор "Переименовывают" и вводят "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