Quando si recuperano valori da un intervallo in Excel, è molto più efficiente ottenere i valori in "bulk" (come array 2D) rispetto al ciclo di ogni riga e colonna. Ad esempio:VSTO: acquisizione delle proprietà della cella di Excel in "bulk"
Dim range = Globals.Table.Range("A1:E5")
Dim values(,) As Object = range.Value
Con 25 celle non fa molta differenza, ma con 10.000 righe per 20 colonne si fa certamente. Fin qui tutto bene.
La mia domanda è: qualcuno ha trovato un modo per fare lo stesso tipo di recupero "alla rinfusa" per altre proprietà? Ad esempio, voglio trovare quali celle sono colorate in un certo modo. Mi piacerebbe fare qualcosa come "range.Interior.Color", ma che restituisce solo un valore, non una matrice di valori. E così finisco il ciclo, che è probabilmente 100 o anche 1000 volte più lento. Per i tavoli di grandi dimensioni, questo è davvero un killer.
PS: Sembra che Moltula si comporti proprio come. Valore: posso recuperarne più uno alla volta. Ma devo ancora convincere i colori a giocare bene.
Apprezzo il vostro aiuto!
+1 bel post Rachel. – brettdj
Ti capita di sapere se c'è un modo per accedere al riferimento di stile della cella ('StyleID') che posso vedere nel file XML da VBA/VSTO? In questo caso è possibile leggere tutti i dati di stile da Excel e quindi mappare ogni cella al suo stile con una sola chiamata Interop per cella. –