获取ExcelRange对象的坐标

时间:2012-03-14 20:05:08

标签: delphi excel com

在Excel的COM API中:

给定一个ExcelRange对象,我如何确定其中包含哪些行和列?

我不想要范围的内容,只需要范围的“坐标”,最好是整数。

我注意到ExcelRange同时具有RowColumn属性,但这些属性仅指示范围左上角的行和列。

注意:我使用的是Delphi,但是这个问题可能与使用Excel的任何语言有关,因此不需要使用Delphi进行回答。

1 个答案:

答案 0 :(得分:4)

假设一个简单的矩形范围,那么您可以使用Rows对象的ColumnsExcelRange属性。选择的左上角由Range.RowRange.Column确定。所选行和列的数量由Range.Rows.CountRange.Columns.Count提供。

完全通用的Excel范围可以由多个非连续区域组成。在这种情况下,您使用Areas ExcelRange属性来迭代构成复杂范围的简单矩形范围。

为了说明,请考虑以下代码:

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;

我实际上没有测试过这段代码,所以我希望我能够正确地记住索引是从1开始的。