【问题标题】:Getting coordinates of an ExcelRange object获取 ExcelRange 对象的坐标
【发布时间】:2012-03-31 08:29:12
【问题描述】:

在 Excel 的 COM API 中:

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

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

我确实注意到ExcelRange 有一个Row 和一个Column 属性,但是这些只表示范围左上角的行和列。

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

【问题讨论】:

    标签: delphi excel com


    【解决方案1】:

    假设一个简单的矩形范围,那么您使用ExcelRange 对象的RowsColumns 属性。选择的左上角由Range.RowRange.Column 确定。选定的行数和列数由Range.Rows.CountRange.Columns.Count 给出。

    一般来说,Excel 范围可以由多个不连续的区域组成。在这种情况下,您使用ExcelRangeAreas 属性来遍历构成复杂范围的简单矩形范围。

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

    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 开始的。

    【讨论】:

      猜你喜欢
      • 2018-08-06
      • 2013-08-18
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 2015-08-01
      相关资源
      最近更新 更多