Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
D003239
Anmeldungsdatum: 07.01.2007 Beiträge: 4
|
Verfasst am: 07.01.2007, 19:36 Titel: Exel-Datei einlesen in Array |
|
|
Hallo,
ich bin ein blutiger Anfänder und es wäre schön wenn mir jemand kurz schreiben könnte, wie ich eine Exel-Datei mit drei Spalten (Name, Vorname, Ort) in einen Array so einliest dass ich über den Array loopen kann und jede spalte einzeln ansprechen kann.
Danke
Marcus |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.01.2007, 19:59 Titel: |
|
|
Hallo erstmal im forum
Excel-Dateien sind seeehr kompliziert aufgebaut, ohne weiteres geht das nicht in freeBasic. dafür bräuchte man sicher eine bibltiothek... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
D003239
Anmeldungsdatum: 07.01.2007 Beiträge: 4
|
Verfasst am: 07.01.2007, 20:05 Titel: |
|
|
Danke. Würde es mit einer .CSV datei einfacher gehen?
Gruß
Marcus |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.01.2007, 20:07 Titel: |
|
|
Klar. CSV, also comma seperated values, kann man in dieser art einlesen:
Code: |
open "datei.csv" for input as #1
while not eof(1)
input #1, wert
[was auch immer nnun kommen mag]
wend
close #1
|
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
D003239
Anmeldungsdatum: 07.01.2007 Beiträge: 4
|
Verfasst am: 07.01.2007, 20:24 Titel: |
|
|
Super. Hat geklappt.
Kannst Du mir noch sagen wie ich jetzt die Spalten trennen kann. Damit ich Name und Vorname separat ansprechen kann.
type zeile
name as zstring * 20
vorname as zstring * 20
end type
Danke
Marcus |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.01.2007, 20:31 Titel: |
|
|
Hm, wie meinst du das jetzt? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 07.01.2007, 20:33 Titel: |
|
|
Code: | "wurst", "hans"
"mustermann", "max"
"musterfrau", "ute" |
Wenn das der Aufbau der datei ist, dann geht das so:
Code: | Type zeile
name As Zstring*20
vorname As Zstring*20
End Type
ReDim daten(0) As zeile
Dim anzahl As Integer
Open "datei.csv" For Input As #1
Do Until Eof(1)
anzahl += 1
ReDim Preserve daten(anz)
With daten(anzahl)
Input #1, .name, .vorname 'alternativ geht auch daten(anzahl).name, daten(anzahl).vorname
End With
Loop
|
_________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 07.01.2007, 23:44 Titel: |
|
|
Mit VBScript wäre es soweit kein Problem: Automatisierungsobjekt mit CreateObject("Excel.Application") erstellen, mit Open()-Methode gewünschte .xls öffnen, davon das gewünschte (meist erste) Tabellenblatt mit Sheets(1) identifizieren. Anschliessend kann man mit Cell(Zeile, Spalte).Value auf die Werte zugreifen und beispielsweise die Werte mittels For-Schleife verarbeiten. Am Schluss .xls mit Close() wieder schliessen und Excel mit Quit() ebenfalls wieder beenden.
Auf Wunsch kann ich kleinen Code bereitstellen. In QB müsste man dafür eine temporäre .VBS-Datei erzeugen und diese mit
Code: | SHELL "cscript //NoLogo " + ENVIRON$("TEMP") + "\foobar.vbs" |
ausführen. Sollte in FreeBasic sicher ebenfalls möglich sein, aber evtl. kann man dort via Win32-API-Aufrufe auf die ActiveX/COM-Schnittstelle das Ganze viel eleganter programmieren. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Eisbaer

Anmeldungsdatum: 16.10.2004 Beiträge: 354 Wohnort: Deutschland,Bayern
|
Verfasst am: 07.01.2007, 23:51 Titel: Excel Tabelle auslesen... |
|
|
' liest aus einer Excel Datei Name und Vorname aus,
' und schreibt diese in eine Text-Datei
VBS (Visual Basic Script) Datei
speichern unter: read_excel.vbs
Code: |
Txt_Datei = "c:\Text.txt" ' vorhandene Text-Datei
Ex_Datei = "c:\namen.xls" ' Vorhandene Excelliste
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oTxt = FSO.OpenTextFile(Txt_Datei,8,1,0)
Set oEx = WScript.CreateObject ("Excel.Application")
Set oWo = oEx.Workbooks.Open(Ex_Datei)
set oSh = oEx.ActiveWorkBook.WorkSheets("Tabelle1")' Name des 1. Tabellenblattes
n=1 'Zeile 1
do
with oSh
nname = .Cells(N, 1) ' Nachname aus Zeile n Spalte 1 lesen
if nname = "" then ' Bis alle Einträge abgearbeitet sind
exit do ' Schleife verlassen
end if
vname = .Cells(N, 2) ' Vorname aus Zeile n Spalte 2 lesen
end with
oTxt.Writeline nname & "," & vname 'zeilenweise schreiben
'oTxt.write nname & "," & vname & "," 'als CVS-Datei
n = n+1
loop
msgbox "Fertig"
oEx.Quit
oTxt.Close |
_________________ Eigene Webseite:
http://www.eisbaer-studios.de |
|
Nach oben |
|
 |
D003239
Anmeldungsdatum: 07.01.2007 Beiträge: 4
|
Verfasst am: 08.01.2007, 00:27 Titel: |
|
|
Hallo,
vielen Dank für deine Tips.
Ich probiers nächstes Wochenende mal aus.
Danke
Marcus |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 08.01.2007, 15:20 Titel: |
|
|
Die Lösung über den WSH und OLE-Automatisierung geht aber auch nur, wenn auf dem Rechner Excel installiert ist. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
|