2010-07-08 9 views
5

के माध्यम से एक्सेल फ़ाइल पढ़ने के दौरान गैर-खाली सेल में डीबीएनएल मैं एक्सेल फ़ाइल पढ़ने के लिए ओलेडीबी का उपयोग करता हूं। कॉलम में से एक में "सामान्य" प्रारूप होता है और इसमें अक्षरों और मानों के साथ दोनों तार होते हैं जिनमें केवल संख्याएं होती हैं। स्ट्रिंग मान बिना किसी समस्या के पुनर्प्राप्त किए जाते हैं, लेकिन शुद्ध संख्यात्मक मान DBNull के रूप में पुनर्प्राप्त किए जाते हैं।ओलेडीबी

कैसे हल करें?

मैं निम्नलिखित कनेक्शन स्ट्रिंग का उपयोग Excel 2003 फ़ाइल (xls) खोलने के लिए:

"Provider=Microsoft.Jet.OLEDB.4.0; 
Data Source=C:\\file.xls; 
Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"" 

उत्तर

6

मैं माइक्रोसॉफ्ट की वेबसाइट पर कुछ प्रलेखन अपने परिदृश्य पर लागू होने वाला पाया। वे सभी संख्याओं को तारों में परिवर्तित करने की अनुशंसा करते हैं।

http://support.microsoft.com/kb/257819

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

उदाहरण के लिए:

* In your eight (8) scanned rows, if the column contains five (5) numeric values and three (3) text values, the provider returns five (5) numbers and three (3) null values. 
* In your eight (8) scanned rows, if the column contains three (3) numeric values and five (5) text values, the provider returns three (3) null values and five (5) text values. 
* In your eight (8) scanned rows, if the column contains four (4) numeric values and four (4) text values, the provider returns four (4) numbers and four (4) null values. 
+3

मैंने पाठ मोड को लागू करने के लिए 'IMEX = 1' जोड़ा (मुझे इस सेल को टेक्स्ट के रूप में पुनर्प्राप्त करने की आवश्यकता नहीं है) लेकिन इससे मदद नहीं मिली। पाठ मोड में मूल्यों को पुन: प्रस्तुत करना असंभव है क्योंकि उनमें से कई हैं। क्या इसे किसी भी तरह से स्वचालित करना संभव है? – flashnik

+0

यदि आप सीधे तालिका/शीट नाम की बजाय क्वेरी का उपयोग करने के इस सुझाव का प्रयास करते हैं तो क्या होगा? थोड़ा दोष यह है कि सभी कॉलम तब स्ट्रिंग के रूप में आते हैं। http://munishbansal.wordpress.com/2009/12/15/importing-data-from-excel-having- मिश्रित- डेटा-types-in-a-column-ssis/ – jdot

1

मैं एक ही समस्या है, लेकिन स्ट्रिंग मूल्यों के साथ की है। संख्यात्मक मान वापस लौटाए जाते हैं लेकिन स्ट्रिंग मानों को पूर्ण के रूप में वापस कर दिया जाता है। मैं संख्यात्मक मानों को स्ट्रिंग मानों के रूप में लोड करना चाहता हूं। कॉलम में अंक और गैर-संख्यात्मक कोड हो सकते हैं (उदाहरण: 100344567 और PRD001X01)।

एक्सेल ड्राइवर मानता है कि कॉलम संख्यात्मक है क्योंकि पहले 8 पंक्तियों में मान संख्यात्मक हैं।

भले ही मैं कोशिकाओं को पाठ (स्वरूप कक्ष) के रूप में परिभाषित करता हूं, यह काम नहीं करता है।

ड्राइवर को स्ट्रिंग के रूप में कॉलम को "देखने" के लिए मजबूर करने के लिए मैंने संख्यात्मक मान ('100344567) के सामने एक उद्धरण दिया है। यह संख्यात्मक मान को एक स्ट्रिंग में बदल देता है।

8 पंक्तियों का यह मान रजिस्ट्री HKEY_LOCAL_MACHINE \ सॉफ़्टवेयर \ Microsoft \ Jet \ 4.0 \ Engines \ Excel \ -> TypeGuessRows = 8 में परिभाषित किया गया है।

मुझे आशा है कि इससे मदद मिलेगी।