Re: Nur bestimmte Spalten/Zeilen aus CSV öffnen
Verfasst: Di, 10.12.2013 18:35
Moin,
ja was denn jetzt? Zeilen(waagerecht) oder Spalten(senkrecht)?
Gruß R
ja was denn jetzt? Zeilen(waagerecht) oder Spalten(senkrecht)?
Gruß R
deutsches Forum rund um Apache OpenOffice und LibreOffice
http://de.openoffice.info/
Code: Alles auswählen
Sub S_load_CSV_keep_Columns
Dim Args(1) as New com.sun.star.beans.PropertyValue
sURL = converttourl("C:\Users\<myUsername>\Desktop\Test.csv") ' <------ Dateipfad
Args(0).Name = "FilterName"
Args(0).Value ="Text - txt - csv (StarCalc)"
Args(1).Name = "FilterOptions "
Args(1).Value = "44,34,12,1,,0,false,false" ' <------ hängt von der Art der .csv-Datei ab
odoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Args())
osheet = odoc.sheets(0)
ncolumns = 5 ' <------ Anzahl Spalten
ocursor = osheet.createCursor
ocursor.gotoendofusedArea(false)
nMaxcolumn = ocursor.rangeaddress.endcolumn
osheet.columns.removeByIndex( ncolumns, nMaxcolumn-(ncolumns-1))
End Sub
Sub S_load_CSV_keep_Rows
Dim Args(1) as New com.sun.star.beans.PropertyValue
sURL = converttourl("C:\Users\<myUsername>\Desktop\Test.csv") ' <------ Dateipfad
Args(0).Name = "FilterName"
Args(0).Value ="Text - txt - csv (StarCalc)"
Args(1).Name = "FilterOptions "
Args(1).Value = "44,34,12,1,,0,false,false" ' <------ hängt von der Art der .csv-Datei ab
odoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Args())
osheet = odoc.sheets(0)
nrows = 5 ' <------ Anzahl Zeilen
ocursor = osheet.createCursor
ocursor.gotoendofusedArea(false)
nMaxrow = ocursor.rangeaddress.endrow
osheet.rows.removeByIndex( nrows, nMaxrow-(nrows-1))
End Sub
Code: Alles auswählen
Args(1).Value = "44,34,12,1,,0,false,false"
Code: Alles auswählen
' =========================
' Zum Ermitteln der Filteroptionen für *Deine* CSV-Datei: öffne sie (aus OOo, über
' Dateidialog, unter Verwendung des Import-Dialogs, mit allen nötigen
' Einstellungen), dann lasse folgendes laufen. Notiere die Rückgabe und ersetze im
' Code oben die Werte:
' http://www.oooforum.org/forum/viewtopic.phtml?t=40544
' Villeroy Aug 02, 2006 12:08 am
Sub showFilterOptions
Dim args(),i%
args() = thisComponent.getArgs
for i = 0 to uBound(Args())
if args(i).Name = "FilterOptions" then inputbox "","",args(i).value
next
End Sub
Code: Alles auswählen
Message: unsupported URL (file:///home/Benutzer/Test/Test.csv)
Code: Alles auswählen
sURL = converttourl("/home/Benutzername/Test/Anmeldung.csv")
Code: Alles auswählen
Message: unsupported URL (file:///home/Benutzer/Test/Anmeldung.csv)
... kann ich irgendwie nicht glauben. Diese Makros habe ich gerade unter Linux Mint mit AOO 4.0.1 ausprobiert:MisterJones hat geschrieben:Die Datei und der Pfad stimmen 100%!
Code: Alles auswählen
Sub S_load_CSV_keep_five_Columns
Dim Args(1) as New com.sun.star.beans.PropertyValue
sURL = converttourl("/home/<myUser>/Dokumente/LibreOffice/Calc/Test.csv") '<------ Dateipfad
Args(0).Name = "FilterName"
Args(0).Value ="Text - txt - csv (StarCalc)"
Args(1).Name = "FilterOptions "
Args(1).Value = "44,34,21,1,,0,false,false" '<---- hängt von der Art der .csv-Datei ab
odoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Args())
osheet = odoc.sheets(0)
ncolumns = 5 '<--- Anzahl Spalten
ocursor = osheet.createCursor
ocursor.gotoendofusedArea(false)
nMaxcolumn = ocursor.rangeaddress.endcolumn
osheet.columns.removeByIndex( ncolumns, nMaxcolumn-(ncolumns-1))
End Sub
Sub S_load_CSV_keep_five_Rows
Dim Args(1) as New com.sun.star.beans.PropertyValue
sURL = converttourl("/home/<myUser>/Dokumente/LibreOffice/Calc/Test.csv") '<------ Dateipfad
Args(0).Name = "FilterName"
Args(0).Value ="Text - txt - csv (StarCalc)"
Args(1).Name = "FilterOptions "
Args(1).Value = "44,34,21,1,,0,false,false" '<---- hängt von der Art der .csv-Datei ab
odoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Args())
osheet = odoc.sheets(0)
nrows = 5 '<--- Anzahl Zeilen
ocursor = osheet.createCursor
ocursor.gotoendofusedArea(false)
nMaxrow = ocursor.rangeaddress.endrow
osheet.rows.removeByIndex( nrows, nMaxrow-(nrows-1))
End Sub
Code: Alles auswählen
44,34,21,1,,0,false,false
Code: Alles auswählen
Sub S_load_CSV_keep_five_Columns
Dim Args(1) as New com.sun.star.beans.PropertyValue
sURL = F_get_Url '<------ Dateipfad
Args(0).Name = "FilterName"
Args(0).Value ="Text - txt - csv (StarCalc)"
Args(1).Name = "FilterOptions "
Args(1).Value = "44,34,21,1,,0,false,false" '<---- hängt von der Art der .csv-Datei ab
odoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Args())
osheet = odoc.sheets(0)
ncolumns = 5 '<--- Anzahl Spalten
ocursor = osheet.createCursor
ocursor.gotoendofusedArea(false)
nMaxcolumn = ocursor.rangeaddress.endcolumn
osheet.columns.removeByIndex( ncolumns, nMaxcolumn-(ncolumns-1))
End Sub
Sub S_load_CSV_keep_five_Rows
Dim Args(1) as New com.sun.star.beans.PropertyValue
sURL = F_get_Url '<------ Dateipfad
Args(0).Name = "FilterName"
Args(0).Value ="Text - txt - csv (StarCalc)"
Args(1).Name = "FilterOptions "
Args(1).Value = "44,34,21,1,,0,false,false" '<---- hängt von der Art der .csv-Datei ab
odoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Args())
osheet = odoc.sheets(0)
nrows = 5 '<--- Anzahl Zeilen
ocursor = osheet.createCursor
ocursor.gotoendofusedArea(false)
nMaxrow = ocursor.rangeaddress.endrow
osheet.rows.removeByIndex( nrows, nMaxrow-(nrows-1))
End Sub
function F_get_Url as string
oDialog = createunoservice("com.sun.star.ui.dialogs.FilePicker")
oDialog.appendFilter("Quelldatei","*.csv")
oDialog.displaydirectory="c:\"
if odialog.execute = 0 then
exit function
endif
F_get_Url = oDialog.Files(0)
end function
Du müsstest einfach nur tun was da bereits stehtMisterJones hat geschrieben:Klasse das klappt einwandfrei!
Aber gibt es auch eine Möglichkeit, Spalte A, C und D auszuwählen, also nicht nebeneinander liegende Spalten zu selektieren?
Dann solltest du den beheben, wie man das bei der Programmierung halt gelegentlich machen muss. Ich kann mir irgendwie nicht so recht vorstellen, dass Rik oder Karolus oder gar beide dir irgendwelchen Blödsinn unterjubeln.MisterJones hat geschrieben:hier erhalte ich einen Syntaxfehler...
Code: Alles auswählen
Sub S_load_CSV_keep_named_Columns
aColumns = Array("A","C","D")
Dim Args(1) as New com.sun.star.beans.PropertyValue
sURL = F_get_Url '<------ Dateipfad
Args(0).Name = "FilterName"
Args(0).Value ="Text - txt - csv (StarCalc)"
Args(1).Name = "FilterOptions"
Args(1).Value = "44,34,21,1,,0,false,false" '<---- hängt von der Art der .csv-Datei ab
odoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Args())
osheet = odoc.sheets(0)
ocursor = osheet.createCursor
ocursor.gotoendofusedArea(false)
nMaxcolumn = ocursor.rangeaddress.endcolumn
for i = nMaxcolumn to 0 step -1
bfound = false
for k = 0 to ubound(aColumns)
if osheet.columns.getbyIndex(i).name = aColumns(k) then bfound = true
next k
if bfound = false Then osheet.columns.removeByIndex( i, 1)
next i
End Sub
function F_get_Url as string
oDialog = createunoservice("com.sun.star.ui.dialogs.FilePicker")
oDialog.appendFilter("Quelldatei","*.csv")
oDialog.displaydirectory="c:\"
if odialog.execute = 0 then
exit function
endif
F_get_Url = oDialog.Files(0)
end function