C# letzte beschrieben Zeile einer Spalte ermitteln


Startseite Forum Ausbildungsblöcke Anwendungsentwickler C# letzte beschrieben Zeile einer Spalte ermitteln

Ansicht von 10 Beiträgen - 1 bis 10 (von insgesamt 10)
  • Autor
    Beiträge
  • #108957
    shifty
    Teilnehmer

    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ß
    shifty

    #125063
    Jann
    Teilnehmer

    Hallo shifty!

    Welche Assembly benutzt du für den Zugriff auf Excel und woran scheiterst du?

    #125067
    shifty
    Teilnehmer

    Fü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?)

    #125064
    Jann
    Teilnehmer

    Die 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);
    #125068
    shifty
    Teilnehmer

    @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.

    #125065
    Jann
    Teilnehmer

    Aber die Ermittlung der letzten Zeile mit „get_end()“ funktioniert?

    #125069
    shifty
    Teilnehmer

    @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

    #125066
    Jann
    Teilnehmer

    Und 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);

    #125070
    shifty
    Teilnehmer

    @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

    #125071
    shifty
    Teilnehmer

    Okay 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]

Ansicht von 10 Beiträgen - 1 bis 10 (von insgesamt 10)
  • Das Forum „Anwendungsentwickler“ ist für neue Themen und Antworten geschlossen.
Momentan aktive Benutzer: 0
No users are currently active
Aktive Benutzer in den letzten 24 Stunden: 0
Keymaster | Moderator | Participant | Spectator | Blocked
Additional Forum Statistics
Threads: 1.488, Posts: 22.646, Members: 11.017
Welcome to our newest member, kentcunningham4
Most users ever online was 5 on 16. September 2020 22:11