Öffnen einer CSV-Datei

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

hoefri55
**
Beiträge: 37
Registriert: Do, 16.09.2004 10:16
Wohnort: Meppen

Öffnen einer CSV-Datei

Beitrag von hoefri55 »

Hallo,

ich habe versucht, mit dem folgenden Code eine CSV-Datei zu öffnen. Klappt aber nicht.
Weiß jemand warum und wie es besser geht?

Sub DateiOeffnen

url=converttourl("C:\test.csv")
dim myFileProp as Object
oDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )

end sub

Ich freue mich auf eine Lösung!!

Gruß, Friedhelm
kannenklaus
*****
Beiträge: 319
Registriert: Mi, 14.12.2005 08:08
Wohnort: freising - oder dort, wo das bier herkommt

Beitrag von kannenklaus »

hallo friedhelm,

im englischpsrachigen forum habe ich folg. funktionierenden code gefunden:

du musst die variable FNAme ohne dateiendung anpassen.

s.a.
http://www.oooforum.org/forum/viewtopic ... t=open+csv

Code: Alles auswählen

Sub ImportData 
Dim oDocument as Object
 FName="c:\temp\1" 
 fnURL=ConvertToURL(FName+".csv") 

'Create new document and import data 
 oDocument = StarDesktop.LoadComponentFromURL( fnURL, "_blank", 0, _
 Array(MakePropertyValue( "FilterName", "Text - txt - csv (StarCalc)" ), _
       MakePropertyValue( "FilterOptions", "32/MRG,34,0,1,7/2/8/2/9/2/10/2" )

'Description of filter options can be found at 
'http://api.openoffice.org/docs/DevelopersGuide/Spreadsheet/Spreadsheet.htm 
    
'Save document 
 oDocument.storeAsURL( ConvertToURL( Fname+".ods" ), Array() ) 
End Sub 

'property function 
Function MakePropertyValue( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue 
   oPropertyValue = createUnoStruct( "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
grüße

klaus
hoefri55
**
Beiträge: 37
Registriert: Do, 16.09.2004 10:16
Wohnort: Meppen

Beitrag von hoefri55 »

Hallo Klaus,

ich danke für den Tipp. Es hat prima geklappt.
Nur der Link für die Import-Optionen ist nicht richtig angegeben (natürlich nicht dein Fehler). Richtig muß er lauten:

http://api.openoffice.org/docs/Develope ... heet.xhtml

(Hier angegeben, falls jemand nachsehen möchte)


Gruß, Friedhelm
Sir_Duke
*
Beiträge: 14
Registriert: Sa, 12.11.2005 14:34

Beitrag von Sir_Duke »

Habe mir folgendes kopiert und ausprobiert

Sub ImportData
Dim oDocument as Object
FName="c:\temp\1"
fnURL=ConvertToURL(FName+".csv")

'Create new document and import data
oDocument = StarDesktop.LoadComponentFromURL( fnURL, "_blank", 0, _
Array(MakePropertyValue( "FilterName", "Text - txt - csv (StarCalc)" ), _
MakePropertyValue( "FilterOptions", "32/MRG,34,0,1,7/2/8/2/9/2/10/2" )

End sub
Hallo

wollte mit folgendem Teil aus deinem Code eine CSV Datei öffnen.

Leider bringt er mir dabei folgende Fehlermeldung:

"""

Basic Laufzeitfehler.
Sub- oder Funktionsprozedur nicht definiert

"""

Mfg

Erwin
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Naja logisch. Hier steckt der Fehler:

Code: Alles auswählen

MakePropertyValue( "FilterOptions", "32/MRG,34,0,1,7/2/8/2/9/2/10/2" )


damit wird eine Funktion "MakePropertyValue" aufgerufen die nirgenswo aufgeschrieben ist. Im anderen Code weiter oben ist die dabei und wenn Du sie mit in den Code übernimmst wird dieser auch laufen.


Gruß
Stephan
Sir_Duke
*
Beiträge: 14
Registriert: Sa, 12.11.2005 14:34

Beitrag von Sir_Duke »

Ok hab nun mal den orginal Code verwendet bis auf die Zeile "Save document"

Leider bekomme ich auch hier eine Fehlermeldung und zwar an folgender Stelle:

"
oDocument = StarDesktop.LoadComponentFromURL( fnURL, "_blank", 0, _
"

Meldung:

BASIC-Laufzeitfehler
Es ist eine EXecption aufgetrent
Type: com.sun.star.lang.IllegalArgumentExceptio
Massage: URL seems to be an unsupportet one.

Ich hab aber keinen blassen schimmer was der von mir will und wie ich es beheben kann.
bronstein
Beiträge: 4
Registriert: Do, 23.11.2006 16:38

Beitrag von bronstein »

Habe eine txt-Datei, deren Datensätze durch Semikolon getrennt sind. Wie muss ich jetzt den Filter anpassen, damit das funktioniert. Habe versucht den Link von hoefri55 zu verstehen. Leider sind meine Englischkentniss wirklich schlecht.
bronstein
Beiträge: 4
Registriert: Do, 23.11.2006 16:38

Beitrag von bronstein »

Hat sich erledigt, habe was gefunden:

Code: Alles auswählen

Dim oDocument as Object
  FName="c:\Kundennummer"
  fnURL=ConvertToURL(FName+".txt")

  'Datei öffnen mit dem Trennzeichen ;
  oDocument = StarDesktop.LoadComponentFromURL( fnURL, "_blank", 0, _
  Array(MakePropertyValue( "FilterName", "Text - txt - csv (StarCalc)" ), _
  MakePropertyValue( "FilterOptions", "9/MRG,34,0,1,1/1/1/1/1/1/1/1" )
 											 											 
  document   = ThisComponent.CurrentController.Frame
  dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Beitrag von Karolus »

Hallo

Den ASCII- Code eines Zeichens kannst du in Calc herausfinden über :
=CODE(";") ergibt --> 59

Code: Alles auswählen

sub Open1CSVFile (sUrl As String) As Object
' Opens CSV-file
' sUrl MUST be in Url-format (for example: "file:///c:/ddd.sxc")
'	( --> use / not \ )
sUrl = "file:///ffff/dddd/aaaaa/cccc.csv"  'linux Pfad Notierung
	Dim fileProperties(1) As New com.sun.star.beans.PropertyValue

	fileProperties(0).Name = "FilterName"
	fileProperties(0).Value = "scalc: Text - txt - csv (StarCalc)"
	fileProperties(1).Name = "FilterFlags"
	fileProperties(1).Value = "59/9,34,0,1,1/1/1/1/1/1/1/1"
                           '59/9 --> columns are devided by ";" and tab
                           '59 -> Semikolon ist  Spaltentrenner
                           '34   --> text delimiter --> double qoutes (")
                           ' IBMPC_850 --> charset (is a constant with the value 4)
                           '			   0 is system charset	
	Open1CSVFile = StarDesktop.loadComponentFromURL(sUrl,"_blank", 0,fileProperties())
End sub
Gruß Karo
Antworten