Datenaufbereitung - Automatisch von Word/Excel nach TXT/CSV mit OpenOffice
Aus TV-Browser Wiki
Viele kleinere Sender haben kein WWW-Presseportal, sondern versenden die Program-Informationen mit Hilfe von Word/Excel-Dateien.
Diese Word-Dateien kann man sehr schlecht mit Java bearbeiten. Ich benutze bei mir OpenOffice, um automatisch aus den Word-Dokumenten Txt-Dateien zu erzeugen.
Alternativ kann man aus Excel-Tabellen auch CSV-Dateien erzeugen
Dazu muß ein neues Marko 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
Diese Makro kann von der Kommandozeile bedient werden mit:
soffice -invisible "macro:///BodumsLibrary.Conversion.ConvertWordToTXT('Test.doc')"
oder
soffice -invisible "macro:///BodumsLibrary.Conversion.ConvertExcelToCSV('Test.xls')"
Nach diesem Aufruf existiert eine Test.txt in dem selben Verzeichniss wie die Test.doc. Natürlich muß der Name der Library angepasst werden.
Nachdem nun die TXT-Datei vorliegt muß "nur noch" der PDS dafür erzeugt werden.