डेल्फी के साथ एमएस एक्सेल शीट्स तक पहुंच और प्रबंधन

यह चरण-दर-चरण मार्गदर्शिका वर्णन करती है कि Microsoft Excel से कैसे कनेक्ट किया जाए, शीट डेटा पुनर्प्राप्त किया जाए, और DBGrid का उपयोग करके डेटा के संपादन को सक्षम किया जाए। आपको सबसे सामान्य त्रुटियों की एक सूची भी मिलेगी जो इस प्रक्रिया में दिखाई दे सकती है, साथ ही उनसे कैसे निपटें।

नीचे क्या शामिल है:

  • एक्सेल और के बीच डेटा ट्रांसफर करने के तरीके डेल्फी. Excel के साथ कैसे कनेक्ट करें एडीओ (ActiveX डेटा ऑब्जेक्ट) और डेल्फी।
  • डेल्फी और एडीओ का उपयोग करके एक एक्सेल स्प्रेडशीट संपादक बनाना
  • Excel से डेटा पुनर्प्राप्त करना। एक्सेल वर्कबुक में टेबल (या रेंज) का संदर्भ कैसे दें।
  • एक्सेल फ़ील्ड (कॉलम) प्रकारों पर एक चर्चा
  • एक्सेल शीट को कैसे संशोधित करें: पंक्तियों को संपादित, जोड़ें और हटाएं।
  • एक डेल्फी एप्लिकेशन से एक्सेल में डेटा स्थानांतरित करना। वर्कशीट कैसे बनाएं और इसे MS Access डेटाबेस से कस्टम डेटा से भरें।

Microsoft Excel से कैसे कनेक्ट करें

Microsoft Excel एक शक्तिशाली स्प्रेडशीट कैलकुलेटर और डेटा विश्लेषण उपकरण है। चूंकि किसी एक्सेल वर्कशीट की पंक्तियों और स्तंभों को डेटाबेस तालिका की पंक्तियों और स्तंभों से निकटता से जोड़ा जाता है, कई डेवलपर्स विश्लेषण उद्देश्यों के लिए अपने डेटा को एक्सेल वर्कबुक में ट्रांसपोर्ट करना उचित समझते हैं; और बाद में आवेदन करने के लिए डेटा पुनः प्राप्त करें।

instagram viewer

आपके एप्लिकेशन और एक्सेल के बीच डेटा विनिमय के लिए सबसे अधिक उपयोग किया जाने वाला दृष्टिकोण है स्वचालन. ऑटोमेशन एक्सेल ऑब्जेक्ट मॉडल का उपयोग करके वर्कशीट में गोता लगाने, उसके डेटा को निकालने और ग्रिड-जैसे घटक के अंदर प्रदर्शित करने के लिए एक एक्सेल डेटा पढ़ने का एक तरीका प्रदान करता है, जैसे कि DBGrid या StringGrid।

स्वचालन आपको कार्यपुस्तिका में डेटा का पता लगाने के साथ-साथ कार्यपत्रक को प्रारूपित करने और चलाने के समय में विभिन्न सेटिंग्स बनाने की सबसे बड़ी सुविधा देता है।

अपने डेटा को बिना ऑटोमेशन के एक्सेल से और दूसरे स्थान पर स्थानांतरित करने के लिए, आप अन्य तरीकों का उपयोग कर सकते हैं जैसे:

  • कॉमा-सीमांकित पाठ फ़ाइल में डेटा लिखें, और Excel को कक्षों में फ़ाइल को पार्स करने दें
  • DDE (डायनामिक डेटा एक्सचेंज) का उपयोग करके डेटा ट्रांसफर करें
  • ADO का उपयोग करके अपने डेटा को कार्यपत्रक से और तक स्थानांतरित करें

ADO का उपयोग करके डेटा ट्रांसफर

चूंकि Excel JET OLE DB का अनुपालन करता है, आप ADO (dbGO या AdoExpress) का उपयोग करके इसे डेल्फी से जोड़ सकते हैं और फिर पुनः प्राप्त कर सकते हैं वर्कशीट का डेटा एक ADO डेटासेट में SQL क्वेरी जारी करके (जैसे आप किसी भी डेटाबेस के खिलाफ डेटासेट खोलेंगे तालिका)।

इस तरह, Excel डेटा को संसाधित करने के लिए ADODataset ऑब्जेक्ट की सभी विधियाँ और सुविधाएँ उपलब्ध हैं। दूसरे शब्दों में, एडीओ घटकों का उपयोग करने से आप एक एप्लिकेशन का निर्माण कर सकते हैं जो डेटाबेस के रूप में एक एक्सेल वर्कबुक का उपयोग कर सकता है। एक अन्य महत्वपूर्ण तथ्य यह है कि एक्सेल एक आउट-ऑफ-प्रोसेस है ActiveX सर्वर. एडीओ इन-प्रोसेस चलाता है और महंगी आउट-ऑफ-प्रोसेस कॉल के ओवरहेड को बचाता है।

जब आप ADO का उपयोग करके Excel से कनेक्ट करते हैं, तो आप केवल कार्यपुस्तिका से और उसके लिए कच्चे डेटा का आदान-प्रदान कर सकते हैं। एक ADO कनेक्शन का उपयोग पत्रक स्वरूपण या कक्षों में सूत्र लागू करने के लिए नहीं किया जा सकता है। हालाँकि, यदि आप अपने डेटा को पूर्व-स्वरूपित कार्यपत्रक में स्थानांतरित करते हैं, तो प्रारूप बनाए रखा जाता है। आपके एप्लिकेशन से एक्सेल में डेटा डाले जाने के बाद, आप कार्यपत्रक में एक (पहले से रिकॉर्ड किए गए) मैक्रो का उपयोग करके कोई भी सशर्त प्रारूपण कर सकते हैं।

आप दो OLE DB प्रदाताओं के साथ ADO का उपयोग करके Excel से कनेक्ट कर सकते हैं जो MDAC का एक हिस्सा हैं: Microsoft Jet OLE DB प्रदाता या ODBC ड्राइवर्स के लिए Microsoft OLE DB प्रदाता। हम Jet OLE DB प्रदाता पर ध्यान केंद्रित करेंगे, जिसका उपयोग एक्स्टेबल इंडेक्सेड अनुक्रमिक एक्सेस विधि (ISAM) ड्राइवरों के माध्यम से एक्सेल वर्कबुक में डेटा एक्सेस करने के लिए किया जा सकता है।

सुझाव: देखें डेल्फी के लिए शुरुआती पाठ्यक्रम ADO डेटाबेस प्रोग्रामिंग यदि आप ADO के लिए नए हैं।

The ConnectionString मैजिक

ConnectionString गुण ADO को बताता है कि कैसे डेटा स्रोत से कनेक्ट करें। ConnectionString के लिए उपयोग किए जाने वाले मान में एक या अधिक तर्क होते हैं जो ADO कनेक्शन को स्थापित करने के लिए उपयोग करता है।

डेल्फी में, TADOConnection घटक ADO कनेक्शन ऑब्जेक्ट को एन्क्रिप्ट करता है; यह उनके कनेक्शन गुणों के माध्यम से कई ADO डेटासेट (TADOTable, TADOQuery, आदि) घटकों द्वारा साझा किया जा सकता है।

एक्सेल से कनेक्ट करने के लिए, एक वैध कनेक्शन स्ट्रिंग में केवल दो अतिरिक्त जानकारी शामिल होती है - कार्यपुस्तिका और एक्सेल फ़ाइल संस्करण का पूर्ण पथ।

एक वैध कनेक्शन स्ट्रिंग इस तरह दिख सकता है:

ConnectionString: = 'प्रदाता = Microsoft। जेट। OLEDB.4.0; डेटा स्रोत = C: \ MyWorkBooks \ myDataBook.xls; विस्तारित गुण = एक्सेल 8.0; ';

जेट द्वारा समर्थित बाहरी डेटाबेस प्रारूप से कनेक्ट करते समय, कनेक्शन के लिए विस्तारित गुणों को सेट करने की आवश्यकता होती है। हमारे मामले में, जब एक एक्सेल "डेटाबेस" से कनेक्ट होता है, तो एक्सेल फ़ाइल संस्करण को सेट करने के लिए विस्तारित गुणों का उपयोग किया जाता है।

एक Excel95 कार्यपुस्तिका के लिए, यह मान "Excel 5.0" (उद्धरण के बिना) है; एक्सेल 97, एक्सेल 2000, एक्सेल 2002 और एक्सेलएक्सपी के लिए "एक्सेल 8.0" का उपयोग करें।

महत्वपूर्ण: Jet 4.0 प्रदाता का उपयोग करना चाहिए क्योंकि Jet 3.5 ISAM ड्राइवरों का समर्थन नहीं करता है। यदि आप Jet प्रदाता को 3.5 संस्करण में सेट करते हैं, तो आपको "इंस्टॉल करने योग्य ISAM नहीं मिल सकता" त्रुटि प्राप्त होगी।

एक और जेट विस्तारित संपत्ति "एचडीआर =" है। "एचडीआर = हां" का अर्थ है कि सीमा में एक हेडर पंक्ति है, इसलिए जेट चयनकर्ताओं की पहली पंक्ति को डेटासेट में शामिल नहीं करेगा। यदि "एचडीआर = नहीं" निर्दिष्ट है, तो प्रदाता रेंज की पहली पंक्ति (या नामित श्रेणी) को डेटासेट में शामिल करेगा।

किसी श्रेणी में पहली पंक्ति को डिफ़ॉल्ट रूप से हेडर पंक्ति माना जाता है ("HDR = Yes")। इसलिए, यदि आपके पास स्तंभ शीर्षक है, तो आपको यह मान निर्दिष्ट करने की आवश्यकता नहीं है। यदि आपके पास कॉलम हेडिंग नहीं है, तो आपको "HDR = नहीं" निर्दिष्ट करना होगा।

अब जब आप पूरी तरह से तैयार हो गए हैं, तो यह वह हिस्सा है जहां चीजें दिलचस्प हो जाती हैं क्योंकि हम अब कुछ कोड के लिए तैयार हैं। आइए देखें कि डेल्फी और एडीओ का उपयोग करके एक सरल एक्सेल स्प्रेडशीट संपादक कैसे बनाया जाए।

ध्यान दें: यदि आपको ADO और जेट प्रोग्रामिंग पर ज्ञान की कमी है तो भी आपको आगे बढ़ना चाहिए। जैसा कि आप देखेंगे, एक एक्सेल वर्कबुक को संपादित करना किसी भी मानक डेटाबेस से डेटा संपादित करने जितना आसान है।