سؤال

أدناه التعليمات البرمجية التالية:فإنه يأخذ مجموعة ، ثم يجد متميزة القيم في مجموعة ، وتخزينها في d_distinct مجموعة أيضا من أجل كل قيمة متميزة أنه يخلق اللون متميزة ، ثم باستخدام Excel.FormatCondition ذلك ألوان مجموعة...(الحالي النطاق 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;                        
}

ولكن هذا يعمل بطيئة جدا...المستخدم سوف تضطر إلى الجلوس والانتظار لمدة دقيقة...أنا فعلت هذا مع هذه الطريقة منذ ، وإلا إذا كنت تفعل ذلك مع سطر واحد من التعليمات البرمجية ببساطة القيام بذلك (أي الألوان بسرعة مذهلة)

range.FormatConditions.AddColorScale(3);

أنا لن تكون قادرة على طلب لون الخلية...(أنا يمكن أن يكون أكثر من عشرة متميزة القيم في مجموعة)

يمكنك أن تساعد لي أن أجعل أول طريقة عمل أسرع ؟ شكرا مقدما!

هل كانت مفيدة؟

المحلول

حاول إيقاف تحديث الشاشة أثناء تشغيل التعليمات البرمجية ثم أعد تشغيله مرة أخرى بعد ذلك.في VBA ، من شأنه أن يكون:

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

كما كنت لا تستخدم VBA ، في محاولة http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel._application.screenupdating(office.11).aspx للحصول على توجيهات

نصائح أخرى

هل حاولت استخدام OpenXML SDK للعمل مع مكتب عام 2007 ؟ لقد استخدمت كلمة و وجدنا أنه أسرع بكثير من استخدام vba أو COM.محاولة الإصدار 2.0 أو 1.0.أعتقد 2.0 لا يزال CTP على الرغم من.أكثر بديهية من vba في كتابي على الرغم من.وإلا screenupdating خدعة هو على الأرجح أسهل شيء للقيام به.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top