Comment et où utiliser les énumérateurs
Un énumérateur est un objet qui permet de parcourir un conteneur ou une collection. Les énumérateurs peuvent être utilisés pour lire les données de la collection, mais ils ne peuvent pas être utilisés pour modifier la collection sous-jacente, alors que IEnumerable est une interface qui définit une méthode GetEnumerator qui renvoie une interface IEnumerator, ce qui, à son tour, permet un accès en lecture seule à une collection.
Aspose.Cells Les API fournissent un tas d’énumérateurs cependant, cet article traite principalement des trois types répertoriés ci-dessous.
- Cells Recenseur
- Énumérateur de lignes
- Énumérateur de colonnes
Comment utiliser les énumérateurs
Cells Recenseur
Il existe différentes façons d’accéder à l’énumérateur Cells, et on peut utiliser l’une de ces méthodes en fonction des exigences de l’application. Voici les méthodes qui renvoient l’énumérateur de cellules.
Toutes les méthodes mentionnées ci-dessus retournent l’énumérateur qui permet de parcourir la collection de cellules qui ont été initialisées.
L’exemple de code suivant illustre l’implémentation de l’interface IEnumerator pour une collection Cells.
Énumérateur de lignes
L’énumérateur de lignes est accessible lors de l’utilisation deRowCollection.GetEnumerator méthode. L’exemple de code suivant illustre l’implémentation de l’interface IEnumerator pourRowCollection.
Énumérateur de colonnes
L’énumérateur de colonnes est accessible lors de l’utilisation deColumnCollection.GetEnumeratorColumnCollection.GetEnumerator méthode. L’exemple de code suivant illustre l’implémentation de l’interface IEnumerator pourColonneCollection.
Où utiliser les énumérateurs
Afin de discuter des avantages de l’utilisation d’énumérateurs, prenons un exemple en temps réel.
Scénario
Une exigence de l’application est de parcourir toutes les cellules d’unFeuille de travailpour lire leurs valeurs. Il pourrait y avoir plusieurs façons de mettre en œuvre cet objectif. Quelques-uns sont illustrés ci-dessous.
Utilisation de la plage d’affichage
Utilisation de MaxDataRow et MaxDataColumn
Comme vous pouvez le constater, les deux approches mentionnées ci-dessus utilisent une logique plus ou moins similaire, c’est-à-dire ; boucle sur toutes les cellules de la collection pour lire les valeurs des cellules. Cela pourrait être problématique pour un certain nombre de raisons, comme indiqué ci-dessous.
- API telles queMaxRow, MaxDataRow, MaxColonne, MaxDataColumn & MaxDisplayRangebesoin de temps supplémentaire pour rassembler les statistiques correspondantes. Dans le cas où la matrice de données (lignes x colonnes) est volumineuse, l’utilisation de ces API peut entraîner une baisse des performances.
- Dans la plupart des cas, toutes les cellules d’une plage donnée ne sont pas instanciées. Dans de telles situations, vérifier chaque cellule de la matrice n’est pas aussi efficace que de vérifier uniquement les cellules initialisées.
- L’accès à une cellule dans une boucle en tant que ligne Cells, colonne entraînera l’instanciation de tous les objets de cellule d’une plage, ce qui peut éventuellement provoquer OutOfMemoryException.
Conclusion
Sur la base des faits mentionnés ci-dessus, voici les scénarios possibles dans lesquels les enquêteurs doivent être utilisés.
- Un accès en lecture seule à la collection de cellules est requis, c’est-à-dire ; l’exigence est d’inspecter uniquement les cellules.
- Un grand nombre de cellules sont à traverser.
- Seules les cellules/lignes/colonnes initialisées doivent être traversées.