我認爲這個問題總結了一下。給定行和列的兩個整數或範圍兩個角的行和列的四個整數,如何獲得該範圍的範圍對象。如何使用VSTO/C#中的行和列號獲取Excel範圍?
回答
凡範圍是多個單元格:
Excel.Worksheet sheet = workbook.ActiveSheet;
Excel.Range rng = (Excel.Range) sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[3,3]);
凡範圍是一個單元:
Excel.Worksheet sheet = workbook.ActiveSheet;
Excel.Range rng = (Excel.Range) sheet.Cells[1, 1];
優秀的答案。幫助我很多+1 – Barun 2012-03-22 22:45:50
我也是,雖然我需要在VBA中做同樣的事情(單細胞的情況):'Dim rng As Range'和'Set rng = ActiveSheet.Cells(1,1)' – Hephaestus 2012-09-22 03:38:40
'workbook.ActiveSheet;'可能是'oExcel.ThisWorkbook.ActiveSheet;''其中'oExcel'是一個Excel實例,對吧? – 2016-04-20 12:31:45
我發現,似乎工作以及良好的短方法...
Dim x, y As Integer
x = 3: y = 5
ActiveSheet.Cells(y, x).Select
ActiveCell.Value = "Tada"
在這個例子中,我們選擇3列和5列向下,然後把「Tada」放在單元格中。
你可以這樣
string str = (string)(range.Cells[row, col] as Excel.Range).Value2 ;
選擇整個使用範圍檢索值
Excel.Range range = xlWorkSheet.UsedRange;
來源:
http://csharp.net-informations.com/excel/csharp-read-excel.htm
燃燒
給定的答案將在Microsoft Excel 14.0對象庫中使用時引發錯誤。 對象不包含get_range的定義。 而是使用
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;
我使用的版本15.0,它也沒有get_range,謝謝你,這段代碼很適合我 – 2016-02-26 14:27:54
UsedRange做工精細用「處女」的細胞,但如果你的細胞都充滿了過去,然後UsedRange將提供給你的舊值。
例如:
「認爲在具有細胞A1到A5填充有文本Excel工作表」。在這種情況下,必須UsedRange被實現爲:
Long SheetRows;
SheetRows = ActiveSheet.UsedRange.Rows.Count;
甲手錶SheetRows變量必須這幾行的執行之後顯示的值爲5。
問題1:但是,如果A5的值被刪除會發生什麼?
A1:SheetRows的值爲5
Q2:爲什麼這樣?
A2:由於MSDN限定UsedRange屬性爲:
獲取表示所有 在任何時間都包含一個值的細胞Microsoft.Office.Interop.Excel.Range對象。
所以,問題是:存在着一些/任何的辦法解決這個問題?
我認爲在2個備選方案:
- 避免刪除單元格的內容,更喜歡全行刪除(右鍵單擊行號,然後選擇「刪除行」
- 使用CurrentRegion代替。 UsedRange屬性的如下:
Long SheetRows;
SheetRows = ActiveSheet.Range("A1").CurrentRegion.Rows.Count;
如果你想要一個像Cells(Rows.Count, 1).End(xlUp).Row
,你可以做到。
只需使用下面的代碼:
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;
面對我發現最快的解決辦法是實際掃描我希望排序單元的行同樣的問題,確定與非空白元素的最後一行然後選擇並對該分組排序。
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. 如何使用office.js Excel Addin中的行號和列號獲取完整的Excel範圍地址?
- 2. 如何使用openxml和c獲取excel表中的範圍#
- 3. 當用戶選擇行號和列號時計算Excel範圍
- 4. 獲取Excel列表的組範圍
- 5. 用Excel範圍和陣列
- 6. 獲取Excel VBA範圍內的第一列範圍
- 7. Excel Interop - 如何獲取第一個未使用列使用的範圍數據?
- 8. 如何獲取sql中的序列號範圍?
- 9. 如何在Excel中獲取動態範圍列參考:)
- 10. 如何使用列名稱獲取Excel中的列號
- 11. MySQL獲取系列號範圍
- 12. 如何使用Excel Interop獲得過濾行的範圍?
- 13. 獲取Excel中刪除的範圍
- 14. 如何使用nighwatch js獲取excel中的行數和列數?
- 15. (Excel)按列使用範圍和標準,按行使用sum_range
- 16. 我不知道如何從Excel文件中獲取行使用範圍
- 17. 從行號獲取命名範圍
- 18. Excel宏 - 如何獲取AutoFiltered行的範圍?
- 19. 如何使用ExcelDNA從一個範圍獲取Excel公式?
- 20. Excel 2003,如何獲取範圍的左上角和右下角?
- 21. 獲取號碼範圍
- 22. 獲取範圍中的唯一號碼
- 23. 如何使用ClosedXMl獲取WorkSheet中列的指定範圍的行數
- 24. 獲取範圍在Excel 2007中
- 25. 獲取序列的範圍
- 26. 如何使用VB.net從Excel中的範圍對象獲取單元格引用?
- 27. 如何獲得的行數和範圍
- 28. 如何在Excel VBA中使用移動列的範圍?
- 29. 如何在Excel中獲取範圍的大小
- 30. excel使用列號的公式範圍參考
我會開始點擊幫助你的答案上的複選標記。如果你的百分比很低,人們不太可能提供幫助。 – 2011-12-20 02:59:37
選擇一個答案+ Dan Crowther。人們應該得到這些觀點。 – Kristopher 2013-10-29 19:57:04
@Wartickler如果你看他的個人資料頁面,你會發現他在2010年最後一次出現在SO上。我認爲他不太可能在可預見的將來接受任何答案:-( – 2014-06-06 07:50:15