Delphi - Excel:定义非连续范围

Mar*_*cus 7 delphi excel-2010

我所拥有的是一张包含数据的工作表,我想要定义一个非连续的范围,例如,可以用来创建一个图表.

只要范围是矩形,就可以轻松定义范围.

range := ASheet.Range['A1', 'B10'];
Run Code Online (Sandbox Code Playgroud)

这将创建一个矩形范围,其左上角位于A1右下角B10.问题是未定义数据时可以使用单个矩形进行选择.

作为一个例子,我们有这些数据:

+-------+------+------+------+------+
| Time  | Col1 | Col2 | Col3 | Col4 |
+-------+------+------+------+------+
| 01:20 |    5 |    1 |  101 |   51 |
| 01:21 |    6 |    1 |  101 |   51 |
| 01:22 |    5 |    0 |  101 |   51 |
| 01:23 |    5 |    0 |  101 |   51 |
| 01:24 |    5 |    0 |  101 |   55 |
| 01:25 |    5 |    1 |  101 |   55 |
| 01:26 |    6 |    1 |  101 |   15 |
| 01:27 |    7 |    2 |  101 |   15 |
| 01:28 |    7 |    2 |  101 |   15 |
+-------+------+------+------+------+
Run Code Online (Sandbox Code Playgroud)

例如,如果我希望为Time,Col1和Col2创建图表,则范围很简单ASheet.Range['A1', 'C10'].如果我想为Time,Col1,Col3和Col4创建图表,则无法以这种方式创建范围(因为不应包括Col2).

在VBA中,可以简单地创建所需的范围.Range("A1:B10,D1:E10").不幸的是,在Delphi(Excel2010)中似乎没有相同的方法来定义范围,实际上它似乎只支持格式的范围.Range[topLeft, bottomRight].

我的问题是:如何在Delphi中定义不连续的范围?

Mar*_*cus 10

经过数小时和数小时的谷歌搜索后,我偶然发现了关键部分:第5次Application.Union阅读Range对象文档时.

解决方案是使用Excel对象方法Union建立两个连续范围的并集,以便定义新范围,该范围可以是非连续的.

例:

ExcelApp := TExcelApplication.Create(..);
...
Range1 := Sheet.Range['A1', 'B10'];
Range2 := Sheet.Range['D1', 'E10'];

Range  := ExcelApp.Union(Range1, Range2);
Run Code Online (Sandbox Code Playgroud)

  • +1; 好的解决方案 我可以与搜索挫折有关(: (2认同)