Datenaufbereitung - Automatisch von Word/Excel nach TXT/CSV mit OpenOffice
Aus TV-Browser Wiki
Viele kleinere Sender haben kein Web-Presseportal, sondern versenden die Programinformationen mit Hilfe von Word-/Excel-Dateien.
Die Word-Dateien kann man nur recht umständlich mit Java auslesen lassen. Hier ist OpenOffice eine Hilfe, um aus den Word-Dokumenten automatisch Textdateien erzeugen zu lassen.
Alternativ kann man aus Excel-Tabellen auch csv-Dateien erzeugen. Dazu muss ein neues Makro erzeugt werden:
Sub ConvertWordToTXT( cFile )
cURL = ConvertToURL( cFile )
' 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.
oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, Array(_
MakePropertyValue( "Hidden", True ),_
) )
cFile = Left( cFile, Len( cFile ) - 4 ) + ".txt"
cURL = ConvertToURL( cFile )
' Save the document using a filter.
oDoc.storeToURL( cURL, Array(MakePropertyValue( "FilterName", "TEXT" ))
oDoc.close( True )
End Sub
Sub ConvertExcelToCSV( cFile )
cURL = ConvertToURL( cFile )
' 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.
oDoc = StarDesktop.loadComponentFromURL( cURL,"_blank", 0, Array(_
MakePropertyValue( "Hidden", True ),_
) )
cFile = Left( cFile, Len( cFile ) - 4 ) + ".csv"
cURL = ConvertToURL( cFile )
' Save the document using a filter.
oDoc.storeToURL( cURL, Array(MakePropertyValue( "FilterName", "Text - txt - csv (StarCalc)" ))
oDoc.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
Dieses Makro kann von der Kommandozeile wie folgt bedient werden:
soffice -invisible "macro:///BodumsLibrary.Conversion.ConvertWordToTXT(Test.doc)"
oder
soffice -invisible "macro:///BodumsLibrary.Conversion.ConvertExcelToCSV(Test.xls)"
Nach diesem Aufruf existiert eine Datei Test.txt im Verzeichnis des Dokumentes Test.doc. Natürlich muss der Name der Programmbibliothek (Library) angepasst werden.
Nachdem nun die Textdatei vorliegt, ist "nur noch" das weiterverarbeitende PDS zu erzeugen.

