获取ExcelRange对象的坐标
在Excel的COM API中:
给定一个ExcelRange
对象,我将如何确定其中包含哪些行和列?
我不想要范围的内容 ,只是范围的“坐标”,最好是整数。
我没有注意到ExcelRange
同时具有Row
和Column
属性,但是这些仅指示范围的左上angular的行和列。
注意:我正在使用Delphi,但是这个问题可能与通过COM使用Excel的任何语言相关,所以使用Delphi进行回答是没有必要的。
假设一个简单的矩形范围,然后您使用ExcelRange
对象的Rows
和Columns
属性。 select的左上angular由Range.Row
和Range.Column
决定。 所选行和列的数量由Range.Rows.Count
和Range.Columns.Count
。
一般而言,Excel范围可以由多个非连续区域组成。 在这种情况下,您可以使用ExcelRange
的Areas
属性遍历组成复杂范围的简单矩形范围。
为了说明考虑下面的代码:
procedure DescribeExcelRange(const Range: ExcelRange); var AreaIndex: Integer; Area: ExcelRange; begin for AreaIndex := 1 to Range.Areas.Count do begin Area := Range.Areas[i]; Writeln(Format( 'Area %d: R%dC%d:R%dC%d', [AreaIndex, Area.Row, Area.Column, Area.Row+Area.Rows.Count-1, Area.Column+Area.Columns.Count-1] )); end; end;
我没有真正testing这个代码,所以我希望我已经正确地记住,索引是基于1的。