Datenaufbereitung - Automatisch von Word/Excel nach TXT/CSV mit OpenOffice: Unterschied zwischen den Versionen

Aus TV-Browser Wiki
Wechseln zu: Navigation⧼comma-separator⧽Suche
Bodo⧼word-separator⧽⧼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.
+
   ' 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.