如何以及在何处使用枚举器,结合Golang通过C++

如何使用枚举器

单元格枚举器

有各种方式可以访问单元格枚举器,并且可以根据应用程序的要求使用任何这些方法。以下是返回单元格枚举器的方法。

  1. Cells.GetEnumerator
  2. Row.GetEnumerator
  3. Range.GetEnumerator

上述所有方法都返回允许遍历初始化的单元格集合的枚举器。

以下代码示例演示了为Cells集合实现IEnumerator接口。

行枚举器

在使用 RowCollection.GetEnumerator 方法时可以访问行枚举器。以下示例演示了如何为 RowCollection 实现IEnumerator接口。

获取列

在使用 ColumnCollection.Get 方法时可以访问列。以下示例演示了如何为 ColumnCollection 实现Get方法。

枚举器的使用场景

为了讨论使用枚举器的优势,让我们举一个实时例子。

情景

应用程序需要遍历给定 Worksheet 中的所有单元格以读取它们的值。实现此目标的方法可能有多种,以下列出几种示例。

使用显示范围

使用MaxDataRow和MaxDataColumn

正如您所注意到的,上述两种方法都使用了几乎相似的逻辑,即在集合中循环遍历所有单元格以读取单元格的值。对于许多原因,这可能会有问题,如下所讨论的。

  1. GetMaxRow()GetMaxDataRow()GetMaxColumn()GetMaxDataColumn()GetMaxDisplayRange() 等API需要额外时间来收集相应的统计信息。如果数据矩阵(行×列)很大,使用这些API可能会影响性能。
  2. 在大多数情况下,给定范围中并非所有单元格都被实例化。在这种情况下,检查矩阵中的每个单元格比仅检查初始化的单元格效率低。
  3. 在循环中访问单元格作为Cells row, column将导致范围内的所有单元格对象被实例化,这最终可能导致OutOfMemoryException。

结论

基于上述事实,以下是应该使用枚举器的可能情况。

  1. 需要只读访问单元格集合,即只需检查单元格。
  2. 需要遍历大量的单元格。
  3. 只需遍历已初始化的单元格/行/列。