दिलचस्प पोस्ट
संहिता ब्लॉक प्रत्येक कार्य को कोष्ठक के साथ पारित किया जाता है, लेकिन 'do' – 'end' (ruby) के साथ नहीं क्या जीआईटी टैग को भी धक्का दिया जाता है? देशी सी ++ में सी # जैसी संपत्तियां? क्या पॉवरहेल स्क्रिप्ट को डबल क्लिक करके .ps1 फ़ाइल पर काम करने का कोई तरीका है? FileUpload सर्वर नियंत्रण का उपयोग किए बिना ASP.net में फ़ाइलों को अपलोड करना इंटेलीज आईडीईए को अप्रयुक्त संकुल हटाने से कैसे रोकें? कैसे निजी कुंजी के साथ। एसक्यूएल का चयन करके एक स्तंभ को छोड़कर तालिका ए से? MySQL में सप्ताहांत और छुट्टियों के अलावा दिनांक अंतर को कैसे गिनना जावा के साथ वेब स्क्रैपिंग फ़ायरफ़ॉक्स के लिए जावास्क्रिप्ट मेमोरी प्रोफाइलर Python dict एक ही हैश के साथ एकाधिक कुंजी कैसे हो सकता है? बिना फ्रेमवर्क के जावास्क्रिप्ट एजेक्स अनुरोध JQuery का उपयोग लक्ष्य तत्व पर क्लिक करने के लिए कैसे करें जावा 8 में स्ट्रिंग के लिए मानचित्र में शामिल होने का सबसे शानदार तरीका

एक्सेल इंटरॉप: _ वर्कशीट या वर्कशीट?

मैं वर्तमान में गतिशील टाइपिंग के बारे में लिख रहा हूं, और मैं Excel इंटरॉप का एक उदाहरण दे रहा हूं मैंने पहले ही कोई भी कार्यालय इंटरॉप किया है, और यह दिखाता है सी # 4 के लिए एमएसडीएन ऑफिस _Worksheet ट्यूटोरियल _Worksheet Worksheet इंटरफ़ेस का उपयोग करता है, लेकिन Worksheet इंटरफ़ेस भी है। मुझे नहीं पता है कि अंतर क्या है

मेरे बेवजह सरल डेमो ऐप (नीचे दिखाया गया) या तो ठीक काम करता है – लेकिन यदि सबसे अच्छा अभ्यास एक या दूसरे को निर्देश देता है, तो मैं इसे उचित रूप से इस्तेमाल करना चाहता हूं।

 using System; using System.Linq; using Excel = Microsoft.Office.Interop.Excel; class DynamicExcel { static void Main() { var app = new Excel.Application { Visible = true }; app.Workbooks.Add(); // Can use Excel._Worksheet instead here. Which is better? Excel.Worksheet workSheet = app.ActiveSheet; Excel.Range start = workSheet.Cells[1, 1]; Excel.Range end = workSheet.Cells[1, 20]; workSheet.get_Range(start, end).Value2 = Enumerable.Range(1, 20) .ToArray(); } } 

मैं कॉम या ऑफिस इंटरऑपरेबिलिटी में पूरी तरह से गोता लगाने से बचने की कोशिश कर रहा हूं, बस सी # 4 की नई विशेषताओं को उजागर करना – लेकिन मैं वास्तव में कुछ भी नहीं करना चाहता, वास्तव में गूंगा।

(वास्तव में कुछ भी हो सकता है, वास्तव में ऊपर कोड में भी गूंगा, उस स्थिति में कृपया मुझे बताएं। बस "ए 1: टी 1" के बजाय अलग-अलग प्रारंभिक / अंत कोशिकाओं का प्रयोग करना जानबूझकर है – यह देखना आसान है कि यह वास्तव में एक सीमा है 20 कोशिकाओं की। कुछ और संभवतः आकस्मिक है।)

तो, क्या मैं _Worksheet Worksheet या Worksheet उपयोग करना चाहिए, और क्यों?

Solutions Collecting From Web of "एक्सेल इंटरॉप: _ वर्कशीट या वर्कशीट?"

अगर मुझे सही याद आती है – और इस पर मेरी याददाश्त थोड़ी फजी है, तब से यह लंबे समय से रहा है जब से मैंने एक्सेल पीआईए को अलग कर लिया – यह इस तरह से है।

एक घटना अनिवार्य रूप से एक विधि है, जब कुछ होता है जब एक ऑब्जेक्ट कॉल होता है। .NET में, इवेंट प्रतिनिधियों, सादे और सरल हैं लेकिन COM में, इंटरफेस में इवेंट कॉलबैक के एक पूरे समूह को व्यवस्थित करने के लिए बहुत आम है। इसलिए आपको किसी वस्तु के दो इंटरफेस हैं – "आने वाले" इंटरफ़ेस, वे तरीकों से जिन्हें आप अन्य लोगों को आपसे कॉल करने की उम्मीद करते हैं, और "आउटगोइंग" इंटरफ़ेस, वे तरीकों जिन्हें आप ईवेंट में होने वाले अन्य लोगों पर कॉल करने की अपेक्षा करते हैं।

अप्रबंधित मेटाडेटा में – प्रकार लाइब्रेरी – एक रचनात्मक ऑब्जेक्ट के लिए तीन चीजों की परिभाषाएं हैं: इनकमिंग इंटरफ़ेस, आउटगोइंग इंटरफ़ेस और कोक्लास, जो कहते हैं, "मैं एक ऐसा योग्य वस्तु है जो इस आने वाली इंटरफ़ेस को लागू करता है और यह आउटगोइंग इंटरफ़ेस "

अब जब टाइप लाइब्रेरी को स्वचालित रूप से मेटाडेटा में अनुवादित किया जाता है, तो उन रिश्ते, दुख की बात है, संरक्षित हैं। यह एक हाथ से उत्पन्न पीआईए के लिए बेहतर होगा कि कक्षाएं और इंटरफेस प्रबंधित दुनिया में हम क्या उम्मीद करते हैं, इसके अनुरूप हैं, लेकिन दुख की बात है, ऐसा नहीं हुआ। इसलिए कार्यालय पीआईए इन प्रतीत होता है कि दोहराव से भरा है, जहां हर रचनात्मक वस्तु के साथ दो इंटरफेस जुड़े हुए हैं, उनके साथ एक ही सामान के साथ। इंटरफेस में से एक को इंटरफ़ेस को कॉकलेस का प्रतिनिधित्व करता है, और उनमें से एक उस कॉकलेस के आने वाले इंटरफ़ेस का प्रतिनिधित्व करता है।

कार्यपुस्तिका कोक्लास पर _Workbook इंटरफ़ेस आने वाले इंटरफ़ेस हैं I कार्यपुस्तिका इंटरफ़ेस इंटरफ़ेस है जो कोकलेस का प्रतिनिधित्व करता है, और इसलिए _Workbook से इनहेरिट करता है

छोटी कहानी कम, मैं कार्यपुस्तिका का उपयोग करूँगा यदि आप ऐसा आसानी से कर सकते हैं; _Workbook एक कार्यान्वयन विस्तार का एक सा है।

अगर आप रिफाफ्टर में पीआईए असेंबली (माइक्रोसॉफ्ट.ऑफ़िस.इंटरॉप.एक्ससेल) को देखते हैं, तो Workbook इंटरफ़ेस में यह परिभाषा है …

 public interface Workbook : _Workbook, WorkbookEvents_Event 

Workbook _Workbook लेकिन ईवेंट जोड़ता है Worksheet (माफ करना, बस देखा गया कि आप Workbooks बारे में बात नहीं कर रहे थे) …

 public interface Worksheet : _Worksheet, DocEvents_Event 

DocEvents_Event

 [ComVisible(false), TypeLibType((short) 0x10), ComEventInterface(typeof(DocEvents), typeof(DocEvents_EventProvider))] public interface DocEvents_Event { // Events event DocEvents_ActivateEventHandler Activate; event DocEvents_BeforeDoubleClickEventHandler BeforeDoubleClick; event DocEvents_BeforeRightClickEventHandler BeforeRightClick; event DocEvents_CalculateEventHandler Calculate; event DocEvents_ChangeEventHandler Change; event DocEvents_DeactivateEventHandler Deactivate; event DocEvents_FollowHyperlinkEventHandler FollowHyperlink; event DocEvents_PivotTableUpdateEventHandler PivotTableUpdate; event DocEvents_SelectionChangeEventHandler SelectionChange; } 

मैं कहूंगा कि Worksheet का इस्तेमाल करने के लिए सबसे अच्छा शर्त है, लेकिन यह अंतर है

केवल आंतरिक उपयोग के लिए क्लासेस और इंटरफेस

सीधे किसी भी निम्न वर्गों और इंटरफेस का उपयोग करने से बचें, जो आंतरिक रूप से उपयोग किया जाता है और आमतौर पर सीधे उपयोग नहीं किया जाता है।

कक्षा / इंटरफ़ेस: उदाहरण

कक्षा श्रेणी: ApplicationClass (वर्ड या एक्सेल), वर्कशीट क्लास (एक्सेल)

क्लासियड इवेंट्स एक्स _SinkHelper: ApplicationEvents4_SinkHelper (वर्ड), वर्कबुकइवेंट्सकैंकहेल्पर (एक्सेल)

_ वर्ग : _ अनुप्रयोग (वर्ड या एक्सेल), _ वर्कशीट (एक्सेल)

क्लासडाइड इवेंट्स एक्स: एप्लिकेशन एवेंट्स 4 (वर्ड), ऐपएवेंट्स (एक्सेल)

मैं क्लासियड ईवेंट्स x: IApplicationEvents4 (Word), IAppEvents (Excel)

http://msdn.microsoft.com/en-gb/library/ms247299(office.11).aspx

संपादित करें: (पुनः: इस उत्तर का स्वरूपण) एक पलायन अंडरस्कोर को सही ढंग से इटैलिक पाठ द्वारा ठीक से प्रारूपित नहीं कर सकता पूर्वावलोकन में सही ढंग से दिखाता है लेकिन पोस्ट किए जाने पर टूटा हुआ है

edit2: काम करता है अगर आप खुद को अंडरस्कोर बनाते हैं जो कि संकल्पनात्मक रूप से भयानक है, लेकिन मुझे लगता है कि ऐसा लगता है

मैंने पिछले कुछ सालों में सी # / एक्सेल COM इंटरप कोड को देखा और लिखा है और लगभग हर मामले में मैंने वर्कशीट का इस्तेमाल किया है I मैंने इस विषय पर माइक्रोसॉफ्ट से निश्चित कुछ भी नहीं देखा है।

एमएसडीएन दिखाता है कि Worksheet इंटरफ़ेस को केवल Worksheet और DocEvents_Event इंटरफेस से प्राप्त होता है। यह प्रतीत होता है कि कोई ऐसी घटनाएं प्रदान करता है जो एक वर्कशीट ऑब्जेक्ट अतिरिक्त सभी में अतिरिक्त बढ़ा सकती है जहां तक ​​मैं देख सकता हूं, Worksheet अपने स्वयं के किसी भी अन्य सदस्य प्रदान नहीं करता है। तो हाँ, आप सभी मामलों में Worksheet इंटरफ़ेस का उपयोग करने के साथ ही साथ जा सकते हैं, क्योंकि आप इसके द्वारा कुछ भी नहीं खोते हैं, और संभावित रूप से इसे प्रदर्शित होने वाली घटनाओं की आवश्यकता हो सकती है।