我认为这个问题总结了一下。给定行和列的两个整数或范围两个角的行和列的四个整数,如何获得该范围的范围对象。如何使用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