Domanda

il codice seguente esegue quanto segue: prende un intervallo, quindi trova valori distinti in un intervallo, e li memorizza in un array d_distinct, anche per ogni valore distinto crea il colore distinto, quindi usando Excel.FormatCondition colora l'intervallo ... (il mio intervallo attuale è A1: HM232)

for (int t = 0; t < d_distinct.Length; t++ )
{                        
    Excel.FormatCondition cond =
        (Excel.FormatCondition)range.FormatConditions.Add(
        Excel.XlFormatConditionType.xlCellValue,
        Excel.XlFormatConditionOperator.xlEqual, 
        "="+d_distinct[t],
        mis, mis, mis, mis, mis);
    cond.Interior.PatternColorIndex = 
        Excel.Constants.xlAutomatic;
    cond.Interior.TintAndShade = 0;
    cond.Interior.Color = ColorTranslator.ToWin32(c[t]);
    cond.StopIfTrue = false;                        
}

Ma funziona troppo lentamente ... l'utente dovrà sedersi e aspettare circa un minuto ... L'ho fatto in questo modo da allora, altrimenti se lo faccio con una riga di codice semplicemente facendo questo (che colora incredibilmente veloce)

range.FormatConditions.AddColorScale(3);

Non sarò in grado di richiedere il colore della cella ... (posso avere più di dieci valori distinti in un intervallo)

puoi aiutarmi a far funzionare il mio primo modo più velocemente? grazie in anticipo!

È stato utile?

Soluzione

Prova a disattivare l'aggiornamento dello schermo mentre il codice è in esecuzione e riattivalo in seguito. In VBA, sarebbe:

Application.ScreenUpdating = False
// do stuff
Application.ScreenUpdating = True

Dato che non stai usando VBA, prova http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel._application.screenupdating (office.11) .aspx per orientamento

Altri suggerimenti

Hai provato a utilizzare l'SDK OpenXML per lavorare con Office 2007? L'ho usato per parola e l'ho trovato molto più veloce rispetto all'utilizzo di vba o COM. Prova versione 2.0 o 1.0 . Penso che 2.0 sia comunque CTP. Molto più intuitivo di vba nel mio libro però. Altrimenti, il trucco di aggiornamento dello schermo è probabilmente la cosa più semplice da fare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top