Reafidy's edited answer is a great start, लेकिन मैं टिप्पणी में जितना कर सकता था उससे अधिक विस्तार करना चाहता था। sheet.get_Range(rangeselect)
पंक्ति से पंक्ति पर जाने से कहीं अधिक तेज है, लेकिन एक बात जो मैंने अभी तक नहीं देखी है वह है कि get_Range पैरामीटर में 255 वर्ण सीमा है।
कि सीमा के आस-पाने के लिए, की तरह पर्वतमाला का एक सेट का निर्माण "8: 8,10: 13,14: 55" सामान्य रूप में तो यह कोड का एक संस्करण का उपयोग करें:
string rangeSelectPart;
while (rangeSelect.Length >= 255)
{
rangeSelectPart = rangeSelect.Substring(0, rangeSelect.Substring(0,255).LastIndexOf(','));
Range multiRangePart = sheet.get_Range(rangeSelectPart, Type.Missing);
//do something with the range here using multiRangePart
rangeSelect= rangeSelect.Substring(rangeSelectPart.Length + 1);
}
Range multiRange = sheet.get_Range(rangeSelect, Type.Missing);
// do the same something with the last part of the range using multiRange
// now that the remaining rows are described in less than 255 characters
हो जाएगा ताकि व्यक्तिगत पंक्तियों पर संचालन करने से काफी तेज हो, लेकिन बड़े गैर-संगत पंक्ति सेटों के साथ प्रस्तुत होने पर भी असफल नहीं होगा।
ध्यान दें कि SutharMonil's answer is way faster आईएफएफ सन्निहित आयताकार श्रेणियों में मूल्यों की स्थापना। सी # से एक्सेल तक जाने वाली बाधा आमतौर पर COM ऑब्जेक्ट्स के माध्यम से बार-बार कॉल होती है जो बनाए और अद्यतन होने पर अवरुद्ध होती है, और उसका जवाब अच्छी तरह से कॉल को समेकित करता है।
दुर्भाग्य से अब तक मेरे परीक्षण में, गैर स्ट्रिंग गुणों के साथ काम करने के लिए इसका उपयोग करने की कोशिश कर रहे हैं जो प्रकार स्ट्रिंग नहीं हैं, जिसके परिणामस्वरूप एक प्रकार त्रुटि हुई है। उदाहरण के लिए:
object[,] colors;
//use C# to set appropriate colors to each location in array...
for(int i = 0; i < colors.get_Length(0); i++){
for(int j = 0; j < colors.get_Length(1); j++){
colors[i,j] = XlThemeColor.xlThemeColorAccent6;
}
}
//below causes a type error
formatRange.Interior.ThemeColor = color;
मैं इसे काम करने के लिए अपडेट करने के लिए याद रखने की कोशिश करूंगा।
दोहराया कार्यों के लिए
अन्त में Globals.ThisAddIn.Application.ScreenUpdating = false;
सेट और फिर सही पर सेट करें जब आप काम हो गया। इसके बिना, एक्सेल श्रेणी सेट के प्रत्येक सेट को अद्यतन करने के बाद स्क्रीन अपडेट करने के लिए बंद हो जाता है और यह ऑपरेशन में बहुत समय जोड़ सकता है।
आप व्यक्तिगत श्रेणियों को संघबद्ध कर सकते हैं, लेकिन यह समेकित पते के साथ एकल कॉल का उपयोग करने से कहीं अधिक कुशल नहीं हो सकता है। –