Letzte Zeile im Excel Arbeitsplatz auslesen

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
wibo050447
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 26
Registriert: Di, 22. Jul 2008 18:27

Letzte Zeile im Excel Arbeitsplatz auslesen

Beitrag von wibo050447 »

Hallo,
habe folgendes Prblem.

Ich will ein Excel Arbeitsblatt einlesen und gebe z.Zt. die
Anzahl der Zeilen in eine Variable ein.

welche Möglichkeit gibt es die letzte Zeilennummer im Excel Arbeitsblatt
das eingelesen werden soll auszulesen?

Im voraus Besten dank
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Beitrag von Christof »

Hallo wibo050447,

was meinst Du mit "letzte Zeile auslesen"? Ist es so, dass Du eine komplett gefüllte Tabelle hast und diese von oben nach unten durchläufst? Dann brauchst Du doch nur feststellen, ob die nächste Zelle leer ist und dann mit dem Einlesen aufhören.

Man kann auch z.B. auf die Zelle "A65000" springen und dann über die Tastenkombination {END}{UP} nach oben springen. So landet man auf dem "letzten" Eintrag in der Spalte A und kann jetzt die Zeilennummer auslesen und anschließend mit dem Einlesen der Daten beginnen.

Vielleicht wäre ein Code-Beispiel von Dir hilfreich?!

Gruß

Christof
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Christof,

gibt es dann nicht auch eine Tastenkombination mit der man an den unteren rechten Rand der Tabelle springen kann? Ich meine mich daran zu erinnern. Dan könnte man das doch auch so lösen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Beitrag von Christof »

Hi Manfred,

das funktioniert mit {END}{DOWN} aber nur, wenn die Tabelle vollständig gefüllt ist. Wenn in der Spalte A z.B. ein paar Zeilen dabei sind, die nicht gefüllt sind, springt man nur bis zu dieser Zeile. Wenn man dagegen von unten kommt :wink: , landet man immer auf dem letzten Eintrag. Voraussetzung natürlich auch hier: Die Zelle ist gefüllt.

Da ich keine richtige Vorstellung habe, wie wibo's Tabelle aussieht, kann ich auch nicht konkret darauf antworten...

Eine weitere Möglichkeit wäre ja auch, gleich in der Excel-Tabelle die Anzahl der Zeilen zu ermitteln und in einer bestimmten Zelle abzulegen. Diese kann man dann zuerst auslesen und hat somit den Endepunkt.


Gruß

Christof
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
die Tastenkombination, die Du meinst, ist Strg-Ende - aber Achtung, die springt in die letzte Zelle (unten rechts) die irgendetwas enthält - und sei es nur eine (nicht sichtbare) Formatierung.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
wibo050447
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 26
Registriert: Di, 22. Jul 2008 18:27

Letzte zeile in Excel

Beitrag von wibo050447 »

Hallo und vielen Dank für die Antworten

Habe sehr wahrscheinlich die Frage falsch gestellt.

Ich benötige die Anweisung/Befehl wie ich aus einer Excel Tabelle
die letzte beschriebene Zeileen Nr. ermittel kann.

Ich lese eine Excel Tabelle in eine dbf Datenbank mit einer FOR NEXT
Schleife ein und gebe manuell die Zeielenanzahl in der Schleife vor

FOR i = 1 to Zeilenanzahl
....
NEXT

Da aber dazwischen auch leere Zeilen sind kann ich nicht beim vorkommen ener leeren Zeile die Schleife beenden.

Es gibt mit sicherhei eine ACTVX Anweisung um die letzte Zeile auszulesen.
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Beitrag von Christof »

Hallo wibo,

gibt's nicht! Wohin sollte der Cursor springen? In die Zeile in der in der Zelle A... ein Eintrag ist, in der A.... irgendwie formatiert ist, in der in irgendeiner Spalte ein Eintrag ist (das geht ja ungefähr mit STRG+ENDE; s.o.)?

Ich plädiere immer noch für die Lösung, erst in die letzte Zelle der Spalte A zu springen (also etwa "Range("A65500").Select) und dann mit Ende+Oben die letzte belegte Zelle anzuspringen. Dann weißt Du, wie weit Du durchlaufen musst.

Gruß

Christof
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Christof,
Christof hat geschrieben:Ich plädiere immer noch für die Lösung, erst in die letzte Zelle der Spalte A zu springen (also etwa "Range("A65500").Select) und dann mit Ende+Oben die letzte belegte Zelle anzuspringen. Dann weißt Du, wie weit Du durchlaufen musst.
vorausgesetzt, in der ersten Spalte steht überhaupt etwas drin... :wink:

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Letzte zeile in Excel

Beitrag von AUGE_OHR »

hi,
wibo050447 hat geschrieben: Es gibt mit sicherheit eine ACTIVX Anweisung um die letzte Zeile auszulesen.
siehe:
public.xbase++.activex, 2007-04-16,
Re: Reading from Excel file is very slow

#DEFINE xlCellTypeLastCell '11' // find last row in excel

oCells := oSheet:callMethod("Range", "A1:IV9999")

//determine the number of rows and columns
nRows := oCells:specialCells(xlCellTypeLastCell):row
nCols := oCells:specialCells(xlCellTypeLastCell):column

//** call only required range
oCells := oSheet:callMethod("Range", "A1:IV"+lTrim(Str(nRows)))

//** load cell values into array
aValues := oCells:cells:value
oder
public.xbase++.activex, 7. August 2007
Re: Last row of a sheet

oExcel:Cells:Item(65536, nColumn).Select()
oExcel:Selection:End(xlUp):Select()
nLastRow:= oExcel:ActiveCell:Row()
gruss by OHR
Jimmy
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Beitrag von Christof »

Hallo Martin,
vorausgesetzt, in der ersten Spalte steht überhaupt etwas drin...
hatte ich ja weiter oben schon geschrieben. Gell?

Hi Jimmy,

danke für Deine Beispiele. Da habe ich auch schon wieder was gelernt, was mir demnächst weiterhelfen wird.

Gruß

Christof
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

wenn ich in Excel in irgendeiner Zelle stehe und STRG+ENDE drücke, komme ich in die Zelle, der letzten benutzten Spalte in der letzten benutzten Zeile. Natürlich kann diese Zelle auch leer sein, aber mit einem STRG+SHIFT+POS1 wird dann alles markiert, was eingegeben wurde.

Vielleicht hilft das ja ;-)
Gruß
Hubert
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Beitrag von Lewi »

Ich hätte diesbezüglich folgenden Lösungsansatz:

1. Export der Tabelle in ein CSV-Format

Dies konnte mittels ActiveX bewältigt werden oder mit dem kostenpflichtigen "Amber Excel-Konverter", der in der Lage ist, im Hintergrund eine Exceltabelle nach CSV zu konvertieren


2. Einlesen und Bearbeitung der CSV-Datei

Zeilen in ein Array einlesen und jede Datenzeile wiederum in ein Array konvertieren (mittels des Separatorzeichens)

Durch Prüfalgorithmen sollte es nun kein Problem mehr darstellen, die Datenzeilen zu ermitteln und verabeiten.


Gruß
Olaf
wibo050447
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 26
Registriert: Di, 22. Jul 2008 18:27

Beitrag von wibo050447 »

Hallo Auge und Ohr,

das war genau das was ich gesucht habe,
hat sofort funktioniert.

Vielen Dank, natürlich auch an alle anderen Antworten.

Gruß wibo050447
Dirk Jucknies
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 21
Registriert: Do, 20. Dez 2007 13:29

Beitrag von Dirk Jucknies »

Hi,

das Gleiche erreicht man auch mit

Code: Alles auswählen

aValues := oSheet:usedRange:value
Grüße Dirk
Antworten