Frage

Ich arbeite mit C ++ unmanaged und Excel 2007. ich einen Aufruf an die Excel4 API bin mit dem Bereich von Zellen, die durch den Benutzer ausgewählt zu erhalten.

Wenn der Benutzer wählt, was ich als ein „gemeinsamer“ Bereich, dieser Aufruf gibt eine Reihe wie dieser. „R1C1: R4C3“, das genau ist das Format, das ich tut, andere Operationen in meiner Anwendung benötigen

Wenn jedoch der Benutzer ganze Spalten auswählen entscheidet dann gibt diesem API-Aufruf nur einen Bereich mit Spalten, so etwas wie diese „C1: C3“, was natürlich ein gültiger Excel-Bereich, aber es bedeutet für mich, dass ich es zu ändern, so dass es wie der Bereich oben sieht; mit anderen Worten muss ich es manuell hinzufügen die Zeilen reichen.

So nehme ich diesen Bereich "C1C3" und ändern zu können. "R1C1: R65534C3"

Vielleicht an dieser Stelle bereits mein Problem bemerkt haben, wie Sie Ich bin schwer sehen können Codierung die Zeilen reichen die max Anzahl der Zeilen, die von Excel 2003 (die Anwendung funktioniert auch mit dieser Version von Excel) unterstützt werden.

Das ist natürlich nicht das, was ich suche, denn wenn ich den gewählten Bereich zu bekommen, ich habe die Informationen in diesem Bereich zu lesen und diese Informationen verwenden, um eine Anfrage an den Server zu machen, so vorstellen, dass der Benutzer nur die Daten eingegeben bis Zeile 534 und noch hat meine Abfrage 65000 Zeilen mit nichts.

Also meine Frage ist, wie kann ich die letzte Zelle erhalten, in dem die Benutzerdaten eingegeben, ich denke es die letzte aktive Zelle genannt wird, so kann ich meine Reichweite begrenzen, bis diese Zeile und denken Sie bitte daran, dass ich mit nicht verwalteten gerade arbeiten Code.

War es hilfreich?

Lösung

Die Excel-4 API? Wirklich?

Es gibt einen Befehl xlcSelectEnd, die Sie in es in jede Richtung eingegeben mit Text in die letzte Zelle springen von einer bestimmten Zelle verwenden können.

Andere Tipps

Versuchen range.selection zu einem Range-Objekt zu werfen.

Region Get Last Gebrauchte Row

     Excel.ApplicationClass app = new Excel.ApplicationClass();
        Excel.Workbook workBook = app.Workbooks.Open(_PathFile,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value);
        // Get the active worksheet using sheet name or active sheet
        Excel.Worksheet workSheet = (Excel.Worksheet)workBook.ActiveSheet;
        // Find the last real row
        int _InLastRow = workSheet.Cells.Find("*",System.Reflection.Missing.Value,
            System.Reflection.Missing.Value, System.Reflection.Missing.Value, Excel.XlSearchOrder.xlByRows,Excel.XlSearchDirection.xlPrevious, false,System.Reflection.Missing.Value,System.Reflection.Missing.Value).Row;
#endregion
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top