Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Exel-Datei einlesen in Array

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
D003239



Anmeldungsdatum: 07.01.2007
Beiträge: 4

BeitragVerfasst am: 07.01.2007, 19:36    Titel: Exel-Datei einlesen in Array Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 19:59    Titel: Antworten mit Zitat

Hallo erstmal im forum lächeln
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
D003239



Anmeldungsdatum: 07.01.2007
Beiträge: 4

BeitragVerfasst am: 07.01.2007, 20:05    Titel: Antworten mit Zitat

Danke. Würde es mit einer .CSV datei einfacher gehen?
Gruß
Marcus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 20:07    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
D003239



Anmeldungsdatum: 07.01.2007
Beiträge: 4

BeitragVerfasst am: 07.01.2007, 20:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.01.2007, 20:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 07.01.2007, 20:33    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 07.01.2007, 23:44    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eisbaer



Anmeldungsdatum: 16.10.2004
Beiträge: 354
Wohnort: Deutschland,Bayern

BeitragVerfasst am: 07.01.2007, 23:51    Titel: Excel Tabelle auslesen... Antworten mit Zitat

' 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
D003239



Anmeldungsdatum: 07.01.2007
Beiträge: 4

BeitragVerfasst am: 08.01.2007, 00:27    Titel: Antworten mit Zitat

Hallo,

vielen Dank für deine Tips.
Ich probiers nächstes Wochenende mal aus.
Danke
Marcus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 08.01.2007, 15:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz