在Excel的COM API中:
给定一个ExcelRange
对象,我如何确定其中包含哪些行和列?
我不想要范围的内容,只需要范围的“坐标”,最好是整数。
我注意到ExcelRange
同时具有Row
和Column
属性,但这些属性仅指示范围左上角的行和列。
注意:我使用的是Delphi,但是这个问题可能与使用Excel的任何语言有关,因此不需要使用Delphi进行回答。
答案 0 :(得分:4)
假设一个简单的矩形范围,那么您可以使用Rows
对象的Columns
和ExcelRange
属性。选择的左上角由Range.Row
和Range.Column
确定。所选行和列的数量由Range.Rows.Count
和Range.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开始的。