Ich denke, die Frage fasst es zusammen. Geben Sie zwei Ganzzahlen für Zeile und Spalte oder vier Ganzzahlen für Zeile und Spalte für die beiden Ecken eines Bereichs an. Wie erhalte ich ein Bereichsobjekt für diesen Bereich.Wie erhalte ich einen Excel-Bereich mit Zeilen- und Spaltennummern in VSTO/C#?
Antwort
Wo der Bereich mehrere Zellen ist:
Excel.Worksheet sheet = workbook.ActiveSheet;
Excel.Range rng = (Excel.Range) sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[3,3]);
Wo Bereich ist eine Zelle:
Excel.Worksheet sheet = workbook.ActiveSheet;
Excel.Range rng = (Excel.Range) sheet.Cells[1, 1];
Ausgezeichnete Antwort.Hat mir sehr geholfen +1 – Barun
Ich auch, obwohl ich das gleiche tun musste (Ein-Zellen-Fall) in VBA: 'Dim rng As Range' und 'Set rng = ActiveSheet.Cells (1, 1)' – Hephaestus
Die 'workbook.ActiveSheet;' könnte 'oExcel.ThisWorkbook.ActiveSheet;' in denen "oExcel" ist eine Excel-Instanz, richtig? –
ich eine gute kurze Methode gefunden, die gut ...
Dim x, y As Integer
x = 3: y = 5
ActiveSheet.Cells(y, x).Select
ActiveCell.Value = "Tada"
scheint zu funktionieren
In diesem Beispiel wählen wir 3 Spalten über und 5 Zeilen nach unten und setzen dann "Tada" in die Zelle.
Sie Wert wie dieser
string str = (string)(range.Cells[row, col] as Excel.Range).Value2 ;
wählen gesamten verwendeten Bereich
Excel.Range range = xlWorkSheet.UsedRange;
Quelle abrufen:
http://csharp.net-informations.com/excel/csharp-read-excel.htm
flammend
Die angegebene Antwort löst einen Fehler aus, wenn sie in der Objektbibliothek von Microsoft Excel 14.0 verwendet wird. Das Objekt enthält keine Definition für get_range. Statt
int countRows = xlWorkSheetData.UsedRange.Rows.Count;
int countColumns = xlWorkSheetData.UsedRange.Columns.Count;
object[,] data = xlWorkSheetData.Range[xlWorkSheetData.Cells[1, 1], xlWorkSheetData.Cells[countRows, countColumns]].Cells.Value2;
Ich benutze Version 15.0 und es hat auch nicht get_range, danke tic, dieser Code funktioniert gut für mich –
Usedrange funktionieren mit „Jungfrauen“ Zellen verwenden, aber wenn Ihre Zellen in der Vergangenheit gefüllt sind, dann wird Usedrange Sie den alten Wert liefern.
Zum Beispiel:
"in einem Excel-Sheet denken, dass Zellen A1 bis A5 gefüllt mit Text hat". In diesem Szenario werden UsedRange müssen umgesetzt als:
Long SheetRows;
SheetRows = ActiveSheet.UsedRange.Rows.Count;
Eine Uhr auf SheetRows Variable einen Wert von 5 nach der Ausführung dieser paar Zeilen angezeigt werden müssen.
Q1: Aber was passiert, wenn der Wert von A5 gelöscht wird?
A1: Der Wert von SheetRows wäre 5
Q2: Warum das?
A2: Da MSDN Usedrange Eigenschaft definieren als:
ein Objekt Microsoft.Office.Interop.Excel.Range Ruft die alle die Zellen darstellt, die einen Wert jederzeit enthalten haben.
Also, die Frage ist: some/jede Abhilfe für dieses Verhalten gibt es?
denke ich, in zwei Alternativen:
- Vermeiden Sie den Inhalt der Zelle zu löschen, Löschen der gesamten Zeile vorzieht (rechts in der Zeilennummer klicken, dann „Zeile löschen“
- Verwenden CurrentRegion statt. wie folgt von Usedrange Eigenschaft:
Long SheetRows;
SheetRows = ActiveSheet.Range("A1").CurrentRegion.Rows.Count;
Wenn Sie wiewollen, Sie können es tun.
benutzen Sie einfach den folgenden Code:
using Excel = Microsoft.Office.Interop.Excel;
string xlBk = @"D:\Test.xlsx";
Excel.Application xlApp;
Excel.Workbook xlWb;
Excel.Worksheet xlWs;
Excel.Range rng;
int iLast;
xlApp = new Excel.Application();
xlWb = xlApp.Workbooks.Open(xlBk, 0, true, 5, "", "", true,
Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWs = (Excel.Worksheet)xlWb.Worksheets.get_Item(1);
iLast = xlWs.Rows.Count;
rng = (Excel.Range)xlWs.Cells[iLast, 1];
iLast = rng.get_End(Excel.XlDirection.xlUp).Row;
vor dem gleichen Problem ich die schnellste Lösung gefunden war, um tatsächlich die Reihen der Zellen scanne ich sortieren wollte, bestimmen die letzte Zeile mit einem nicht leeren Element und dann wählen und sortieren Sie nach dieser Gruppierung.
Dim lastrow As Integer
lastrow = 0
For r = 3 To 120
If Cells(r, 2) = "" Then
Dim rng As Range
Set rng = Range(Cells(3, 2), Cells(r - 1, 2 + 6))
rng.Select
rng.Sort Key1:=Range("h3"), order1:=xlDescending, Header:=xlGuess, DataOption1:=xlSortNormal
r = 205
End If
Next r
- 1. Getting die Zeilen- und Spaltennummern, die mehrere Bedingungen in Pandas
- 2. Aktuelle Zeilen- und Spaltennummern in einer RichTextBox in einer Winforms-Anwendung
- 3. Resequenz Spaltennummern in MySQL
- 4. PHP: Wie erkennt man Zeilen- und Spaltennummern aus der HTML-Tabelle?
- 5. Wie erhalte ich einen POST in einer asp.net-Anwendung?
- 6. Wie extrahiert man Daten aus .txt nicht durch angegebene Zeilen- und Spaltennummern?
- 7. Zwei gleiche Tabellen (unterschiedliche Spaltennummern) unterschiedliche Anzahl von Zeilen
- 8. Scala: Wie erhalte ich einen "statischen Slot"?
- 9. Wie erhalte ich einen korrekten Gesamtzeitwert?
- 10. Wie speichere und erhalte ich einen Blob von sqlite
- 11. Wie erhalte ich mehr als einen Ausnahmetyp?
- 12. Wie erhalte ich einen automatisch generierten Wert?
- 13. Warum erhalte ich einen Serialisierungsfehler?
- 14. Warum erhalte ich einen Symbolsuchfehler?
- 15. Wie erhalte ich meinen Code, um einen Charakternamen zehn Mal in verschiedenen Zeilen auszudrucken?
- 16. Warum erhalte ich einen NameError?
- 17. Warum erhalte ich einen Kompilierungsfehler?
- 18. Warum erhalte ich einen Syntaxfehler in PHP?
- 19. SSIS flache Dateien mit variablen Spaltennummern
- 20. Warum erhalte ich einen Stapelüberlauffehler?
- 21. Wie erhalte ich einen Typnamen mit Templaten als String?
- 22. Warum erhalte ich einen Neudefinitionsfehler?
- 23. Wie erhalte ich einen Timer in einer Powershell-Messagebox?
- 24. Wie erhalte ich in Visual C# 2008 mithilfe von WPF einen benutzerdefinierten Anwendungsnamen und einen Startfensternamen?
- 25. Modify Teile einer Matrix auf Basis von linearer Gleichung auf Zeilen- und Spaltennummern
- 26. Wie simuliere ich einen Webhook mit POSTMAN und erhalte ihn in einer Aktion
- 27. Erhalte einen Wörterbuchwert mit Reflection
- 28. Wie erhalte ich einen Simulink-Konstantenwert in Java-Code?
- 29. Wie erhalte ich in C++ einen int-Index eines Iterators?
- 30. Wie erhalte ich einen symmetrischen Schlüssel in Windows Phone 7?
Ich würde beginnen, das Häkchen auf die Antworten, die Ihnen geholfen haben. Menschen sind weniger wahrscheinlich, wenn Ihr Prozentsatz niedrig ist. –
Wählen Sie eine Antwort + Dan Crowther. Die Leute verdienen die Punkte. – Kristopher
@Wartickler Wenn Sie auf seine Profilseite schauen, werden Sie sehen, dass er 2010 zum letzten Mal auf SO gesehen wurde. Ich halte es für unwahrscheinlich, dass er in absehbarer Zeit irgendwelche Antworten akzeptiert :-( –