Pregunta

El siguiente código

hace lo siguiente: toma un rango, luego encuentra valores distintos en un rango, y los almacena en una matriz d_distinct, también para cada valor distinto, crea el color distinto, luego usa Excel.FormatCondition colorea el rango ... (mi rango actual es 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;                        
}

Pero esto funciona demasiado lento ... el usuario tendrá que sentarse y esperar aproximadamente un minuto ... Lo hice de esta manera desde entonces, de lo contrario, si lo hago con una línea de código simplemente haciendo esto (que colorea increíblemente rápido)

range.FormatConditions.AddColorScale(3);

No podré solicitar el color de la celda ... (puedo tener más de diez valores distintos en un rango)

¿me pueden ayudar a hacer que mi primer trabajo funcione más rápido? gracias de antemano!

¿Fue útil?

Solución

Intente desactivar la actualización de la pantalla mientras se ejecuta el código y vuelva a activarla después. En VBA, eso sería:

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

Como no está utilizando VBA, intente http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel._application.screenupdating (office.11) .aspx para orientación

Otros consejos

¿Ha intentado usar el SDK de OpenXML para trabajar con Office 2007? Lo he usado para Word y lo encontré mucho más rápido que usando vba o COM. Pruebe versión 2.0 o 1.0 . Sin embargo, creo que 2.0 todavía es CTP. Sin embargo, mucho más intuitivo que vba en mi libro. De lo contrario, el truco de actualización de pantalla es probablemente la cosa más fácil de hacer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top