2012-03-30 16 views
7

संशोधित किए बिना एक्सेल इंटरमीस्ड डेटा टाइप पढ़ना मैं एक्सेल फ़ाइल को पढ़ने के लिए सी # का उपयोग करने की कोशिश कर रहा हूं जिसमें इंटरमीस्ड डेटाटाइप है। नीचे मेरी कनेक्शन स्ट्रिंगरजिस्ट्री कुंजी

var path = //xls location 
var MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties='Excel 8.0;IMEX=1;'"); 

रिसर्च मुझे सिखाया है कि कनेक्शन स्ट्रिंग में पूरा Extended Properties

Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text

हालांकि माना जाता है है, मैं कनेक्शन स्ट्रिंग में बताया गया कि, TypeGuessRows=0है का कोई मतलब नहीं है क्योंकि मान सीधे रजिस्ट्री से लिया जाएगा। इसलिए मुझे मैन्युअल रूप से कुंजी को संशोधित करने और कनेक्शन स्ट्रिंग से इस प्रॉपर्टी को हटाने की आवश्यकता है।

विशेष रजिस्ट्री कुंजी है कि शामिल किया गया था है:

पथ:

\ Microsoft HKEY_LOCAL_MACHINE \ SOFTWARE \ जेट \ 4.0 \ इंजन \ एक्सेल

कुंजी:

TypeGuessRows

मूल मूल्य = , ताकि इसे में परिवर्तन काम करने के लिए में =

इस IMEX भी मुश्किल काम नहीं करेगा कर के बिना मैं Extended Properties में TypeGuessRows=0 जोड़ें।

हालांकि, मेरी कंपनी रजिस्ट्री मान को संशोधित करने से रोकती है (कड़ाई से)। मुझे यह करने के विकल्प खोजने के लिए कहा गया था।

संक्षेप में:

वहाँ पढ़ने intermixed डेटाप्रकार के लिए एक रास्ताबिना फ़ाइल उत्कृष्टता प्राप्त है संशोधित किसी भी रजिस्ट्री कुंजी (जो काफी एक आम बात है)?

इसके अलावा विषय:

आप इस पहले अनुभव किया है? क्या संभावनाएं हैं कि हम केवल रजिस्ट्री कुंजी को संशोधित किए बिना कनेक्शन स्ट्रिंग से TypeGuessRows=0 सेट कर सकते हैं (मेरे उपरोक्त आधार को रद्द करना)।

बातें OleDb के साथ बाहर काम नहीं करते हैं:

वहाँ OleDb पास विकल्प हैं?

मैं किसी भी सलाह या सुझाव की सराहना करता हूं।

सादर

उत्तर

6

आप क्या कर सकते लेकिन जब से तुम हो

var MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties='Excel 8.0;HDR=No;IMEX=1;'"); 

कुंजी यहाँ एचडीआर = नहीं (कोई हेडर) स्थापित करने के लिए है करने के लिए एक्सेल की पहली पंक्ति में शीर्ष लेख और सेट कनेक्शन स्ट्रिंग होने की आवश्यकता होती है, शीर्षलेख अब प्रत्येक कॉलम को स्ट्रिंग (टेक्स्ट) के रूप में माना जाएगा, और आप प्रत्येक सेल मान पर पार्सिंग या सत्यापन कर सकते हैं। बेशक आपको पहली पंक्ति को छोड़ना या निकालना होगा, क्योंकि इसमें हेडर जानकारी है।

2

इसके बजाय OleDb का उपयोग कर के मैं Excel Data Reader का उपयोग पता है। यह बहुत काम करता है! अत्यधिक सिफारिशित!

+0

ग्रेट डिस्कवरी! धन्यवाद! – Bronek

संबंधित मुद्दे