Startseite › Forum › Ausbildungsblöcke › Anwendungsentwickler › C# letzte beschrieben Zeile einer Spalte ermitteln
- This topic has 9 Antworten, 2 Teilnehmer, and was last updated vor 15 years, 7 months by shifty.
-
AutorBeiträge
-
16. September 2008 um 13:54 #108957shiftyTeilnehmer
Hallo zusammen,
folgendes Problem. Ich möchte die letzte beschrieben Zeile einer Excel Tabelle in C# ermitteln. In VB.NET sieht das ganz so aus:
letzteZeile= Range(„A65536“).End(xlUp).Row
[/CODE]oder so:
[CODE]letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
[/CODE]Nun benötigte ich das ganz aber in C#…
Hier ein möglicher Lösungsansatz bei dem ich allerdings nicht weiter komme:
[CODE]Excel.Worksheet xlsWs;
letzteZeile = xlsWs.Cells[xlsWs.Rows.Count, 1].End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row;[/CODE]Gruß
shifty[CODE]letzteZeile= Range(„A65536“).End(xlUp).Row
[/CODE]oder so:
letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
[/CODE]Nun benötigte ich das ganz aber in C#…
Hier ein möglicher Lösungsansatz bei dem ich allerdings nicht weiter komme:
[CODE]Excel.Worksheet xlsWs;
letzteZeile = xlsWs.Cells[xlsWs.Rows.Count, 1].End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row;[/CODE]Gruß
shifty[CODE]letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
[/CODE]Nun benötigte ich das ganz aber in C#…
Hier ein möglicher Lösungsansatz bei dem ich allerdings nicht weiter komme:
Excel.Worksheet xlsWs;
letzteZeile = xlsWs.Cells[xlsWs.Rows.Count, 1].End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row;[/CODE]Gruß
shifty[CODE]Excel.Worksheet xlsWs;
letzteZeile = xlsWs.Cells[xlsWs.Rows.Count, 1].End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row;[/CODE]Gruß
shifty17. September 2008 um 6:09 #125063JannTeilnehmerHallo shifty!
Welche Assembly benutzt du für den Zugriff auf Excel und woran scheiterst du?
17. September 2008 um 6:39 #125067shiftyTeilnehmerFür den Zugriff benutzte ich
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Excel;[/CODE]und daraus dann eben die entsprechenden Objekte Excel.Application und Excel.Worksheet.
Als Entwicklungsumgebung benutze ich das Visual Studio 2008 Prof, und das Projekt ist als Excel 2003 AddIn angelegt (VSTO).Er wirft mir folgendes beim erstellen aus
Fehler 1 „object“ enthält keine Definition für „End“, und es konnte keine Erweiterungsmethode „End“ gefunden werden, die ein erstes Argument vom Typ „object“ akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
[CODE]using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Excel;[/CODE]und daraus dann eben die entsprechenden Objekte Excel.Application und Excel.Worksheet.
Als Entwicklungsumgebung benutze ich das Visual Studio 2008 Prof, und das Projekt ist als Excel 2003 AddIn angelegt (VSTO).Er wirft mir folgendes beim erstellen aus
Fehler 1 „object“ enthält keine Definition für „End“, und es konnte keine Erweiterungsmethode „End“ gefunden werden, die ein erstes Argument vom Typ „object“ akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
17. September 2008 um 7:36 #125064JannTeilnehmerDie Schnittstelle zu Office arbeitet leider größtenteils nicht typsicher.
Schau dir mal folgendes an, daraus solltest du die richtige Lösung für dich ableiten können:
Code:Microsoft.Office.Tools.Excel.Worksheet sheet = new Excel.Worksheet();
sheet.Range[0, 0].get_End(Microsoft.Office.Interop.Excel.XlDirection.xlUp);18. September 2008 um 6:43 #125068shiftyTeilnehmer@Jann 46314 wrote:
Code:Microsoft.Office.Tools.Excel.Worksheet sheet = new Excel.Worksheet();Wenn ich mein Worksheet so wie du es vorgeschlagen hast deklariere, kann ich dem Objekt nicht das aktive Worksheet der Excel Application zuweisen. Ich muss es als
Microsoft.Office.Interop.Excel.Worksheet xlsWs;[/CODE]
deklarieren, sonst funktioniert es nicht.[CODE]Microsoft.Office.Interop.Excel.Worksheet xlsWs;[/CODE]
deklarieren, sonst funktioniert es nicht.
18. September 2008 um 9:09 #125065JannTeilnehmerAber die Ermittlung der letzten Zeile mit „get_end()“ funktioniert?
18. September 2008 um 9:42 #125069shiftyTeilnehmer@Jann 46373 wrote:
Aber die Ermittlung der letzten Zeile mit „get_end()“ funktioniert?
Kann ich schlecht testen, wenn ich dem xlsWs kein Actives Worksheet zuordnen kann dessen letzte Zeile ich ermitteln könnte. :p
18. September 2008 um 10:44 #125066JannTeilnehmerUnd warum deklarierst du es dann nicht einfach als Worksheet aus dem Interop-Namespace? :confused: Da – wie oben schon geschrieben – hier typunsicher gearbeitet wird, musst du natürlich casten 😉
Code:Excel.Worksheet sheet = this.Application.ActiveWorkbook.ActiveSheet as Excel.Worksheet;string beginCell = „A“ + sheet.Rows.Count;
string endCell = „B“ + sheet.Rows.Count;
string txt = sheet.get_Range(beginCell, endCell).get_End(Excel.XlDirection.xlUp).Text.ToString();System.Windows.Forms.MessageBox.Show(txt);
18. September 2008 um 11:02 #125070shiftyTeilnehmer@Jann 46388 wrote:
Und warum deklarierst du es dann nicht einfach als Worksheet aus dem Interop-Namespace?
😀 das hatte ich doch am anfang gemacht, und da bin ich eben net mit weiter gekommen erinnerst dich? 😉
aber ich werds mal eben so versuchen wie du es da hast
18. September 2008 um 11:13 #125071shiftyTeilnehmerOkay so klappt es Danke 🙂
sheet.get_Range(beginCell, endCell).get_End(Excel.XlDirection.xlUp).Row;[/CODE][CODE]sheet.get_Range(beginCell, endCell).get_End(Excel.XlDirection.xlUp).Row;[/CODE]
-
AutorBeiträge
- Das Forum „Anwendungsentwickler“ ist für neue Themen und Antworten geschlossen.