Sim, existe uma maneira de linha de comando para converter entre esses formatos de arquivo. Mas uma macro deve primeiro ser instalada no OpenOffice. Essa macro levará um nome de arquivo do OpenOffice especificado a linha de comando e crie um arquivo do Microsoft Excel (.xls) com o mesmo nome, exceto para a extensão do arquivo.
Eu testei isso com o OpenOffice 3.2 no Windows, mas espero que funcione no Ubuntu e no OpenOffice 1.1 ou posterior.
O programa a ser usado na linha de comando é soffice
. No Windows, ele não está no caminho e o caminho absoluto deve ser usado ou o diretório atual deve estar lá.
Exemplo de linha de comando do Ubuntu (não testada) que converte uma planilha do OpenOffice
arquivo em /home/mortense/temp9/test2.ods
para o formato do Excel, /home/mortense/temp9/test2.xls
:
"/usr/lib/openoffice/program/soffice" "macro:///Standard.doConvertToExcel.doConvertToExcel(/home/mortense/temp9/test2.ods)"
Exemplo de linha de comando do Windows usada durante o teste que converte um arquivo de planilha do OpenOffice em D:\temp9\test2.ods
para o formato do Excel, D:\temp9\test2.xls
:
"D:\Program Files (x86)\OpenOffice32\OpenOffice.org 3\program\soffice.exe" "macro:///Standard.doConvertToExcel.doConvertToExcel(D:/temp9/test2.ods)"
A macro está listada abaixo. Aqui estão as instruções de instalação:
-
Inicie o OpenOffice Calc .
-
Copie o código no final desta resposta para a área de transferência. Crie uma macro: menu Ferramentas / Macros / Organizar macros / OpenOffice.org Basic /. Em seguida, expanda para "Minhas Macros / Padrão /" para que "Padrão" seja selecionado. Pressione o botão "Novo".
-
Clique com o botão direito na aba no canto inferior esquerdo e selecione: Insert / BASIC Module. Clique com o botão direito do mouse no módulo criado, selecione "Renomear" e digite "doConvertToExcel". Clique na área de edição (para definir o foco lá), selecione all ( Ctrl + A ) e cole no código. Feche a janela (por exemplo, com Ctrl + W ). É isso!
O código da macro:
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