Datenaufbereitung - Automatisch von Word/Excel nach TXT/CSV mit OpenOffice

Aus TV-Browser Wiki
Version vom 14. April 2005, 17:55 Uhr von Bodo⧼word-separator⧽⧼parentheses⧽ ⧼parentheses⧽
⧼revision-nav⧽
Wechseln zu: Navigation⧼comma-separator⧽Suche

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.