von F3K Total » Sa, 22.02.2014 15:05
Soedele,
eigentlich müsste dieses Thema abgetrennt werden und eine neue Überschrift bekommen.
Text Datei per Makro nach Calc importieren
Die folgende Lösung ist sicherlich langsamer als der .csv Import.
Da deine Beispieldatei keine Information darüber in sich trägt, ob es sich bei einer Spalte um Text handelt, habe ich keine Lösung per Filter gefunden und lese die csv Datei deshalb zeilenweise ein.
Code: Alles auswählen
sub Import_csv
odocument = StarDesktop.loadComponentFromURL("private:factory/scalc","_blank", 0, Array())
oSheet = odocument.sheets(0)
sPath = F_get_Url
oFileAccess = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
oInputStream = oFileAccess.openFileRead(sPath)
oFileRead = createUnoService("com.sun.star.io.TextInputStream")
oFileRead.InputStream = oInputStream
oFileRead.Encoding = "UTF-8"
r = 0
Do While NOT oFileRead.IsEOF
sCurrentLine = oFileRead.readLine
csv_data = split(sCurrentLine, ";")
for c = 0 to ubound(csv_data)
if isNumeric(csv_data(c)) then
if c = 15 then goto 100' 15 entspricht der Spalte P: EAN-Nummer
oSheet.getCellByPosition(c,r).value = csv_data(c)
else
100:
oSheet.getCellByPosition(c,r).String = csv_data(c)
end if
next c
r = r + 1
Loop
oInputStream.closeInput
msgbox ("Es wurden "+r+" Zeilen erfolgreich importiert ;-)",64,"Import abgeschlossen")
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
Viel Erfolg damit
Gruß R
Soedele,
eigentlich müsste dieses Thema abgetrennt werden und eine neue Überschrift bekommen.
[b]Text Datei per Makro nach Calc importieren[/b]
Die folgende Lösung ist sicherlich langsamer als der .csv Import.
Da deine Beispieldatei keine Information darüber in sich trägt, ob es sich bei einer Spalte um Text handelt, habe ich keine Lösung per Filter gefunden und lese die csv Datei deshalb zeilenweise ein.
[code]sub Import_csv
odocument = StarDesktop.loadComponentFromURL("private:factory/scalc","_blank", 0, Array())
oSheet = odocument.sheets(0)
sPath = F_get_Url
oFileAccess = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
oInputStream = oFileAccess.openFileRead(sPath)
oFileRead = createUnoService("com.sun.star.io.TextInputStream")
oFileRead.InputStream = oInputStream
oFileRead.Encoding = "UTF-8"
r = 0
Do While NOT oFileRead.IsEOF
sCurrentLine = oFileRead.readLine
csv_data = split(sCurrentLine, ";")
for c = 0 to ubound(csv_data)
if isNumeric(csv_data(c)) then
if c = 15 then goto 100' 15 entspricht der Spalte P: EAN-Nummer
oSheet.getCellByPosition(c,r).value = csv_data(c)
else
100:
oSheet.getCellByPosition(c,r).String = csv_data(c)
end if
next c
r = r + 1
Loop
oInputStream.closeInput
msgbox ("Es wurden "+r+" Zeilen erfolgreich importiert ;-)",64,"Import abgeschlossen")
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[/code]
Viel Erfolg damit
Gruß R