Datenaufbereitung - Automatisch von Word/Excel nach TXT/CSV mit OpenOffice: Unterschied zwischen den Versionen
Aus TV-Browser Wiki
Version vom 24. September 2004, 19:33 Uhr ⧼parentheses⧽ Bodo⧼word-separator⧽⧼parentheses⧽ |
Version vom 14. April 2005, 17:55 Uhr ⧼parentheses⧽ Bodo⧼word-separator⧽⧼parentheses⧽ ⧼parentheses⧽ |
||
Zeile 1: | Zeile 1: | ||
Viele kleinere Sender haben kein WWW-Presseportal, sondern versenden die Program-Informationen mit Hilfe von | Viele kleinere Sender haben kein WWW-Presseportal, sondern versenden die Program-Informationen mit Hilfe von | ||
− | Word-Dateien. | + | 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. | 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: | Dazu muß ein neues Marko erzeugt werden: | ||
Zeile 8: | Zeile 10: | ||
Sub ConvertWordToTXT( cFile ) | Sub ConvertWordToTXT( cFile ) | ||
cURL = ConvertToURL( cFile ) | cURL = ConvertToURL( cFile ) | ||
− | + | ||
− | + | ' Open the document. | |
' Just blindly assume that the document is of a type that OOo will | ' Just blindly assume that the document is of a type that OOo will | ||
' correctly recognize and open -- without specifying an import filter. | ' correctly recognize and open -- without specifying an import filter. | ||
Zeile 15: | Zeile 17: | ||
MakePropertyValue( "Hidden", True ),_ | MakePropertyValue( "Hidden", True ),_ | ||
) ) | ) ) | ||
+ | |||
+ | |||
cFile = Left( cFile, Len( cFile ) - 4 ) + ".txt" | cFile = Left( cFile, Len( cFile ) - 4 ) + ".txt" | ||
cURL = ConvertToURL( cFile ) | cURL = ConvertToURL( cFile ) | ||
− | ' Save the document using a filter. | + | ' Save the document using a filter. |
oDoc.storeToURL( cURL, Array(MakePropertyValue( "FilterName", "TEXT" )) | oDoc.storeToURL( cURL, Array(MakePropertyValue( "FilterName", "TEXT" )) | ||
− | + | ||
oDoc.close( True ) | oDoc.close( True ) | ||
End Sub | 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: | Diese Makro kann von der Kommandozeile bedient werden mit: | ||
− | soffice -invisible "macro:///BodumsLibrary.Conversion.ConvertWordToTXT('Test.doc')" | + | 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. | 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. | Nachdem nun die TXT-Datei vorliegt muß "nur noch" der PDS dafür erzeugt werden. |
Version vom 14. April 2005, 17:55 Uhr
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.