Tôi nghĩ câu hỏi sẽ kết thúc. Cho hai số nguyên cho hàng và cột hoặc bốn số nguyên cho hàng và cột cho hai góc của một phạm vi, làm thế nào để có được một đối tượng phạm vi cho phạm vi đó.Làm cách nào để có được một phạm vi Excel sử dụng số hàng và cột trong VSTO/C#?
Trả lời
đâu phạm vi là nhiều ô:
Excel.Worksheet sheet = workbook.ActiveSheet;
Excel.Range rng = (Excel.Range) sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[3,3]);
đâu Phạm vi đó là một tế bào:
Excel.Worksheet sheet = workbook.ActiveSheet;
Excel.Range rng = (Excel.Range) sheet.Cells[1, 1];
Câu trả lời xuất sắc Giúp tôi rất nhiều +1 – Barun
Tôi cũng vậy, mặc dù tôi cần phải làm điều tương tự (trường hợp một ô) trong VBA: 'Dim rng As Range' và 'Set rng = ActiveSheet.Cells (1, 1)' – Hephaestus
'workbook.ActiveSheet;' có thể là 'oExcel.ThisWorkbook.ActiveSheet;' trong đó 'oExcel' là một cá thể Excel, phải không? –
Tôi tìm thấy một phương pháp ngắn tốt điều đó dường như làm việc tốt ...
Dim x, y As Integer
x = 3: y = 5
ActiveSheet.Cells(y, x).Select
ActiveCell.Value = "Tada"
Trong ví dụ này, chúng tôi đang chọn 3 cột trên và 5 hàng xuống, sau đó đặt "Tada" vào ô.
bạn có thể lấy giá trị như
string str = (string)(range.Cells[row, col] as Excel.Range).Value2 ;
chọn toàn bộ phạm vi sử dụng này
Excel.Range range = xlWorkSheet.UsedRange;
nguồn:
http://csharp.net-informations.com/excel/csharp-read-excel.htm
rực
Câu trả lời cho trước sẽ ném một lỗi nếu được sử dụng trong Thư viện đối tượng Microsoft Excel 14.0. Đối tượng không chứa định nghĩa cho get_range. Thay vì sử dụng
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;
Tôi đang sử dụng phiên bản 15.0 và nó cũng không có get_range, cảm ơn tic, mã này hoạt động tuyệt vời cho tôi –
làm việc tốt UsedRange với "trinh nữ" tế bào, nhưng nếu các tế bào của bạn được lấp đầy trong quá khứ, sau đó UsedRange sẽ cung cấp cho bạn những giá trị cũ.
Ví dụ:
"Nghĩ trong một bảng tính Excel có có các tế bào A1 để A5 điền với văn bản". Trong kịch bản này, UsedRange phải được thực hiện như:
Long SheetRows;
SheetRows = ActiveSheet.UsedRange.Rows.Count;
Một chiếc đồng hồ để biến SheetRows phải hiển thị một giá trị 5 sau khi thực hiện cặp vợ chồng này của dòng.
Q1: Nhưng, điều gì xảy ra nếu giá trị của A5 bị xóa?
A1: Giá trị của SheetRows sẽ là 5
Q2: Tại sao lại như vậy?
A2: Bởi vì MSDN xác định tài sản UsedRange như:
Gets một đối tượng Microsoft.Office.Interop.Excel.Range đại diện cho tất cả các tế bào đã chứa một giá trị bất cứ lúc nào.
Vì vậy, câu hỏi là: Tồn tại một số/bất kỳ cách giải quyết cho hành vi này?
Tôi nghĩ trong 2 lựa chọn:
- Tránh xóa nội dung của các tế bào, thích xóa toàn bộ hàng (click chuột phải trong số hàng, sau đó "xóa hàng"
- Sử dụng CurrentRegion để thay thế. tài sản UsedRange như sau:
Long SheetRows;
SheetRows = ActiveSheet.Range("A1").CurrentRegion.Rows.Count;
Nếu bạn muốn như Cells(Rows.Count, 1).End(xlUp).Row
, bạn có thể làm được.
chỉ cần sử dụng đoạn mã sau:
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;
Đối mặt với cùng một vấn đề tôi thấy giải pháp nhanh nhất là để thực sự quét các hàng của các tế bào tôi muốn sắp xếp, xác định hàng cuối cùng với một yếu tố phi trống và sau đó chọn và sắp xếp theo nhóm đó.
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. Làm cách nào tôi có thể nhận Phạm vi các hàng được lọc bằng cách sử dụng Excel Interop?
- 2. Nhận phạm vi cột đầu tiên từ một phạm vi trong Excel VBA
- 3. Làm cách nào để tham chiếu một ô trong phạm vi excel có tên?
- 4. Cách kiểm tra xem một Phạm vi Excel có trống trong C#
- 5. Làm thế nào để có được số dòng trong bảng excel bằng cách sử dụng python?
- 6. Làm cách nào để chọn các hàng theo phạm vi?
- 7. Cách lưu trữ một phạm vi từ excel thành một biến Phạm vi?
- 8. Rails3 Làm thế nào tôi có thể sử dụng: params trong phạm vi được đặt tên?
- 9. Cách lấy kích thước của một phạm vi trong Excel
- 10. Nhận ô cuối cùng (cột, hàng) của đối tượng phạm vi Excel
- 11. Làm thế nào để quấn Excel con trỏ để giữ nó trong một phạm vi cụ thể
- 12. Sử dụng một phạm vi từ một mô hình có liên quan trong phạm vi khác
- 13. Làm thế nào để bạn chọn toàn bộ bảng tính excel với Phạm vi sử dụng Macro trong VBA?
- 14. Cách tạo hộp thoại lựa chọn phạm vi bằng cách sử dụng vba trong Excel?
- 15. Làm thế nào để chấm dứt một sợi trong một phạm vi xem phạm vi đậu?
- 16. Excel làm thế nào để tìm các giá trị trong 1 cột tồn tại trong phạm vi giá trị trong
- 17. Làm cách nào để chọn toàn bộ cột hoặc hàng trong một công thức bằng excel?
- 18. Làm cách nào để sử dụng phạm vi có Ransack trong Rails 3?
- 19. Trả về một phạm vi từ A1 đến ô được sử dụng cuối cùng thực sự
- 20. phạm vi biến xslt và cách sử dụng nó
- 21. Tạo một số ngẫu nhiên trong một phạm vi bằng cách sử dụng C#
- 22. lấy số cột của một hàng cụ thể trong excel đã cho bằng cách sử dụng Java
- 23. Làm cách nào để viết mã SQL ràng buộc cho một số nằm trong phạm vi?
- 24. Làm cách nào để buộc một số nằm trong phạm vi C#?
- 25. Số Đảo ngược trong một Phạm vi
- 26. Làm cách nào để chọn một số cột có AWK?
- 27. Excel - làm thế nào để sử dụng một cột cho "thẻ" để lọc trên
- 28. Làm thế nào để có được giá trị của một ô bằng chỉ số hàng và cột chỉ số
- 29. Làm cách nào để tìm kiếm giữa một phạm vi ngày, sử dụng mô hình ActiveRecord?
- 30. Làm thế nào để làm tròn một số trong một phạm vi nhất định?
Tôi sẽ bắt đầu nhấp vào dấu kiểm trên các câu trả lời đã giúp bạn. Mọi người ít có khả năng giúp đỡ hơn nếu tỷ lệ phần trăm của bạn thấp. –
Chọn câu trả lời + Dan Crowther. Con người xứng đáng với các điểm. – Kristopher
@Wartickler Nếu bạn nhìn vào trang hồ sơ của mình, bạn sẽ thấy rằng anh ấy được nhìn thấy lần cuối trên SO vào năm 2010. Tôi cho rằng có thể anh ấy sẽ không chấp nhận bất kỳ câu trả lời nào trong tương lai gần :-( –