एक्सेल "बाहरी तालिका अपेक्षित प्रारूप में नहीं है।"


162

मैं नीचे दिखाए गए कोड का उपयोग करके एक्सेल (xlsx) फ़ाइल पढ़ने की कोशिश कर रहा हूं। मुझे एक "बाहरी तालिका अपेक्षित प्रारूप में नहीं है।" त्रुटि जब तक मेरे पास फ़ाइल पहले से ही एक्सेल में नहीं है। दूसरे शब्दों में, मुझे अपने सी # प्रोग्राम से पढ़ने से पहले फाइल को एक्सेल में खोलना होगा। Xlsx फ़ाइल हमारे नेटवर्क पर एक शेयर पर है। मैं पहली बार खोलने के बिना फ़ाइल को कैसे पढ़ सकता हूं? धन्यवाद

string sql = "SELECT * FROM [Sheet1$]";
string excelConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathname + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1;\"";

using (OleDbDataAdapter adaptor = new OleDbDataAdapter(sql, excelConnection)) {
    DataSet ds = new DataSet();
    adaptor.Fill(ds);
}

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

जवाबों:


246

"बाहरी तालिका अपेक्षित प्रारूप में नहीं है।" आमतौर पर कनेक्शन स्ट्रिंग के साथ Excel 2007 फ़ाइल का उपयोग करने की कोशिश करते समय होता है: Microsoft.Jet.OLEDB.4.0 और विस्तारित संस्करण = 8.0

निम्नलिखित कनेक्शन स्ट्रिंग का उपयोग करने से अधिकांश समस्याएं ठीक होती हैं।

public static string path = @"C:\src\RedirectApplication\RedirectApplication\301s.xlsx";
public static string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";

10
विडंबना यह है कि मुझे यह त्रुटि किसी और के आवेदन (Scribe) से प्राप्त हुई, लेकिन स्पष्टीकरण ने अभी भी मेरे लिए समस्या हल कर दी: "Save As" Excel 97-2003, और त्रुटि ठीक हो गई।
जेफ डेविस

4
.xlsx या .xls एक्सटेंशन?
FAtBalloon

3
आपको इसे पहले इंस्टॉल करना होगा: microsoft.com/en-us/download/confirmation.aspx?id=23734
rovsen

11
यह अविश्वसनीय हो सकता है, लेकिन मैं बस शीट के नाम को सभी लोअरकेस में बदल देता हूं और शीट 1 $ का उपयोग करता हूं
स्मिथ

3
मैं LinqToExcel का उपयोग कर रहा हूं, और उस क्वेरी स्ट्रिंग का उपयोग करने के लिए LinqToExcel प्राप्त करने के लिए, मुझे फ़ाइल का नाम बदलकर xlsx करना होगा। वास्तव में स्प्रेडशीट 97 एक्सेल स्प्रेडशीट है, लेकिन ओडबेक प्रदाता इस बारे में परवाह नहीं करता है। एक बार जब मैं LinqToExcel को सही क्वेरी स्ट्रिंग का उपयोग करने में धोखा देता हूं, तो प्रदाता स्पष्ट रूप से यह निर्धारित करता है कि फ़ाइल के एक्सटेंशन से स्वतंत्र फ़ाइल को कैसे पढ़ें। मेरे मामले में सुविधाजनक बचाव का रास्ता।
टिम कोकर

26

इस कोड के लिए धन्यवाद :) मैं वास्तव में इसकी सराहना करता हूं। मेरे लिये कार्य करता है।

public static string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";

इसलिए यदि आपके पास एक्सेल फ़ाइल का भिन्न संस्करण है, तो फ़ाइल नाम प्राप्त करें, यदि इसका एक्सटेंशन .xlsx है, तो इसका उपयोग करें:

Private Const connstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";

और अगर यह .xls है , तो उपयोग करें:

Private Const connstring As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" + path + ";Extended Properties=""Excel 8.0;HDR=YES;"""

5
FYI करें: यह एक OleDbException को फेंक देगा यदि आप .xlsएक पीसी पर एक फ़ाइल खोलने का प्रयास करते हैं जिसमें जेट ओलेडब स्थापित नहीं है।
jp2code

@ ट्रेक्स क्या आप सुनिश्चित हैं कि कोड की आपकी अंतिम पंक्ति सही है? क्या आप इसे फिर से किसी संपादक में ले सकते हैं?
जोगी

15

(मेरे पास टिप्पणी करने के लिए बहुत कम प्रतिष्ठा है, लेकिन यह जोशकाबा की प्रविष्टि पर टिप्पणी है, एक्सेल 2007 के लिए जेट के बजाय ऐस-इंजन का उपयोग करके)

यदि आपके पास ऐस आपके मशीन पर स्थापित / पंजीकृत नहीं है, तो आप इसे प्राप्त कर सकते हैं: https://www.microsoft.com/en-US/download/details.aspx?id=13255

यह एक्सेल 2010 के लिए भी लागू होता है।


मेरे पास ACE इंजन स्थापित है, लेकिन मुझे यह जानना होगा कि मेरे प्रोजेक्ट में किस संदर्भ II को शामिल करने की आवश्यकता है ताकि मेरा इंस्टॉलर इसमें शामिल हो। सभी मशीनें जो मेरे ऐप पर स्थापित हैं, जरूरी नहीं कि एमएस ऑफिस स्थापित हो।
jp2code

1
लिंक अब एक त्रुटि संदेश देता है - We're sorry, this download is no longer available
RBT

9

बस मेरा केस जोड़ दो। मेरी xls फ़ाइल एक वेबसाइट से डेटा एक्सपोर्ट फंक्शन द्वारा बनाई गई थी, फ़ाइल एक्सटेन्शन xls है, इसे सामान्य रूप से MS Excel 2003 द्वारा खोला जा सकता है। लेकिन Microsoft.Jet.OLEDB.4.0 और Microsoft.ACE.OLEDB.12.0 दोनों को एक "X" मिल गया है बाहरी तालिका अपेक्षित प्रारूप में नहीं है "अपवाद।

अंत में, समस्या यह है कि, जैसा कि अपवाद ने कहा, "यह अपेक्षित प्रारूप में नहीं है"। हालाँकि यह एक्सटेंशन नोट नाम xls है, लेकिन जब मैं इसे एक टेक्स्ट एडिटर के साथ खोलता हूं, तो यह वास्तव में एक अच्छी तरह से बनाई गई html फ़ाइल है, सभी डेटा एक <table> में हैं, प्रत्येक <tr> एक पंक्ति है और प्रत्येक <td> एक है सेल। तब मुझे लगता है कि मैं इसे html तरीके से पार्स कर सकता हूं।


यह मेरा मामला भी था, हालाँकि मेरी फ़ाइल वास्तव में XML थी। फिर भी यह जानना अच्छा होगा कि OBDC का उपयोग करके इसे कैसे आयात किया जाए, लेकिन मुझे नहीं लगता कि इसका समर्थन किया गया है।
डेविड रोजर्स

@DavidRogers, मैंने कभी XML ODBC ड्राइवर जैसा कुछ देखा, लेकिन कभी इस्तेमाल नहीं किया, आप cdata.com/drivers/xml/odbc पर एक नज़र है ।
जोसेफ डिंग

यहाँ एक ही मामला है, मुझे लगता है कि नोटपैड के साथ फ़ाइल खोलने पर जादू शुरू हो गया है, वास्तव में मैं आपके जवाब पर मतदान कर रहा हूं क्योंकि मैंने अब तक आपकी पोस्ट देखने के लिए नीचे स्क्रॉल नहीं किया था (और अब मैंने पहले ही फ़ाइल खोल दी / पार्स कर दिया Html चपलता पैक के साथ ...) लेकिन आपका जवाब शुद्ध तर्क के आधार पर शीर्ष पर होना चाहिए: फ़ाइल को पहले दर्ज करें! और देखें कि क्या उसके अंदर कुछ Excel-ish फ़ाइल-शैली है!
गैब्रियल जी

यदि यह एक html फ़ाइल है, तो बस इस तरह विस्तारित गुण लागू करें:Extended Properties=""HTML Import;HDR=No;IMEX=1
नेपालज

4

मुझे भी यही समस्या थी। जो इन चरणों का उपयोग करके हल किया गया है:

1.) फाइल पर क्लिक करें

2.) "Save as" चुनें

3.) ड्रॉप डाउन पर क्लिक करें (प्रकार के रूप में सहेजें)

यहां छवि विवरण दर्ज करें

4.) एक्सेल 97-2003 वर्कबुक चुनें

यहां छवि विवरण दर्ज करें

5.) Save बटन पर क्लिक करें

यहां छवि विवरण दर्ज करें


1
बू! एक पुरानी फ़ाइल प्रारूप में बदलने पर भी विचार नहीं होना चाहिए। इस उत्तर के समय, 97-2003 प्रारूप 16 वर्ष पुराना था और 12 वर्ष पुराने थे। मैं कुछ वर्षों को समझ सकता था, लेकिन एक दशक से अधिक समय तक एक पेशेवर डेवलपर को यह सुझाव नहीं देना चाहिए कि फ़ाइल प्रारूप को पुराना होना चाहिए।
लेमिअर्टी

3

मेरे पास यही मुद्दा था (ACE.OLEDB का उपयोग करके) और मेरे लिए इसका हल क्या था यह लिंक था:

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

इसका सार यह है कि कई कार्यालय संस्करण और विभिन्न कार्यालय sdk, असेंबली, इत्यादि को स्थापित करने से रजिस्ट्री में ACEOleDB.dll के संदर्भ में OFFICE12 के बजाय OFFICE12 फ़ोल्डर को इंगित किया गया है।

C: \ Program Files \ Common Files \ Microsoft साझा \ OFFICE14 \ ACEOLEDB.DLL

लिंक से:

वैकल्पिक रूप से, आप अपने एक्सेस संस्करण से मेल खाने के लिए dll पथ को बदलते हुए रजिस्ट्री कुंजी को संशोधित कर सकते हैं।

Access 2007 में OFFICE12, Access 2010 - OFFICE14 और Access 2013 - OFFICE15 का उपयोग करना चाहिए

(ओएस: 64 बिट ऑफिस: 64 बिट) या (ओएस: 32 बिट ऑफिस: 32 बिट)

कुंजी: HKCR \ CLSID {3BE786A0-0366-4F5C-9434-25CF162E475E} \ InprocServer32 \

मान का नाम: (डिफ़ॉल्ट)

मान डेटा: C: \ Program Files \ Common Files \ Microsoft साझा \ OFFICE14 \ ACEOLEDB.DLL

(OS: 64 बिट ऑफिस: 32 बिट)

कुंजी: HKCR \ Wow6432Node \ CLSID {3BE786A0-0366-4F5C-9434-25CF162E475E} \ InprocServer32 \

मान का नाम: (डिफ़ॉल्ट)

मान डेटा: C: \ Program Files (x86) \ Common Files \ Microsoft साझा किया गया \ OFFICE14 \ ACEOLEDB.DL


मुझे प्रोग्राम और फीचर्स और रिपेयर ACE में जाना आसान लगा। (मेरे लिए, ACE का नाम Microsoft Access रनटाइम 2016 है)। मुझे लगता है कि मैं इस समस्या का प्रकार था और यह कि मरम्मत मेरे लिए सभी रजिस्ट्री कुंजी रीसेट मेरे बिना regedit को परेशान करने ;-)।
बिंकी

2

आयात किए जा रहे पत्रक पर जटिल संकेत () फ़ार्मुलों का उपयोग करने का प्रयास करते समय मैंने यह त्रुटि भी देखी है। मैंने इस पर ध्यान दिया क्योंकि यह दो कार्यपुस्तिकाओं के बीच एकमात्र अंतर था जहां एक आयात कर रहा था और दूसरा नहीं था। दोनों 2007+ .XLSX फाइलें थीं, और 12.0 इंजन स्थापित किया गया था।

मैंने पुष्टि की कि यह इस मुद्दे को था:

  • फ़ाइल की एक प्रतिलिपि बनाना (अभी भी समस्या थी, इसलिए यह कुछ बचत के रूप में नहीं था)
  • अप्रत्यक्ष सूत्रों के साथ शीट में सभी कक्षों का चयन करना
  • केवल मान के रूप में चिपकाना

और त्रुटि गायब हो गई।


2

मुझे थर्ड पार्टी और एक XLSX वर्कबुक के ओलेड रीडिंग के साथ त्रुटियां हो रही थीं। समस्या छिपी हुई वर्कशीट प्रतीत होती है जो त्रुटि का कारण बनती है। वर्कशीट को अनहाइड करने से वर्कबुक आयात करने में सक्षम हुई।


2

यदि फ़ाइल केवल पढ़ने के लिए है, तो इसे हटा दें और इसे फिर से काम करना चाहिए।


1

एक ही मुद्दे में भाग गया और इस धागे को पाया। अप्रैल 17 '13 पर स्वीकृत उत्तर के लिए @ स्मिथ की टिप्पणी को छोड़कर ऊपर दिए गए सुझावों में से किसी ने भी मदद नहीं की।

मेरे मुद्दे की पृष्ठभूमि @ zhiyazw के करीब है - मूल रूप से dtsx पैकेज में डेटा स्रोत के रूप में एक निर्यातित एक्सेल फाइल (मेरे मामले में SSRS) को सेट करने की कोशिश कर रहा है। सभी मैंने किया, कुछ छेड़छाड़ के बाद, वर्कशीट का नाम बदल रहा था। यह कम नहीं होना चाहिए क्योंकि @Smith ने सुझाव दिया है।

मुझे लगता है कि ACE OLEDB एक निश्चित XML संरचना का पालन करने के लिए एक्सेल फाइल की उम्मीद करता है लेकिन किसी भी तरह की रिपोर्टिंग सेवाओं को इसकी जानकारी नहीं है।


मैं अपेक्षित प्रारूप में नहीं तालिका के उसी अंक में भाग गया। मैंने सत्यापित किया कि मेरी कार्यपुस्तिका में कोई छिपी हुई शीट नहीं थी। वर्कबुक में वास्तविक वर्कशीट नाम को कैपिटल में रखा गया है, लेकिन C # कोड में मैंने जो फ़ाइल जोड़ी है उसे पार्स करने के लिए .ToLower () टैब नाम के लिए और अब मैं एक्सेल फाइल को फिर से पार्स कर सकता हूं। धन्यवाद!
vvvv4d

1

एक्सेल फ़ाइल पते में गलत एक्सटेंशन हो सकता है। आप xls से xlsx या इसके विपरीत में एक्सटेंशन बदल सकते हैं और फिर से प्रयास कर सकते हैं।


0

फ़ाइल को किसी अन्य प्रक्रिया से लॉक किया जा सकता है, आपको इसे कॉपी करने की आवश्यकता है, जैसा कि इस पोस्ट में कहा गया है



0

बस इस मुद्दे पर मेरा समाधान जोड़ रहा है। मैं वेबसर्वर के लिए एक .xlsx फ़ाइल अपलोड कर रहा था, फिर उसमें से पढ़ना और SQL सर्वर पर थोक सम्मिलित करना। यह एक ही त्रुटि संदेश मिल रहा था, सभी सुझाए गए उत्तरों की कोशिश की लेकिन कोई भी काम नहीं किया। आखिरकार मैंने फ़ाइल को एक्सेल 97-2003 (.xls) के रूप में सहेजा, जो काम किया ... मेरे पास अब केवल यही मुद्दा है कि मूल फ़ाइल में 110,000+ पंक्तियाँ थीं।


0

यदि आपको अभी भी यह समस्या है, तो अपनी अनुमतियों की जांच करें, मैंने इनमें से कई सुझावों की कोशिश की और मेरी ठोस समस्या यह थी कि जिस फ़ाइल को मैं संसाधित करना चाहता था वह स्रोत नियंत्रण में थी और थ्रेड के पास कोई अनुमति नहीं थी, मुझे संपूर्ण फ़ोल्डर अनुमतियाँ बदलनी थीं और यह काम करना शुरू कर दिया (मैं वहाँ कई फ़ाइलों को संसाधित कर रहा था) ... यह कई सुझावों से भी मेल खाता है जैसे फ़ाइल का नाम बदलना या यह जाँचना कि फ़ाइल किसी अन्य प्रक्रिया द्वारा पाला नहीं गया है।

मुझे उम्मीद है इससे आपको मदद मिली होगी।


0

मुझे यह समस्या थी और एचटीएमएल आयात में विस्तारित गुणों को बदलते हुए मार्कस मिरिस द्वारा इस पोस्ट के अनुसार तय किया गया :

strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & importedFilePathAndName _
         & ";Extended Properties=""HTML Import;HDR=No;IMEX=1"";"

0

OleDb के बजाय, आप Excel Interop का उपयोग कर सकते हैं और वर्कशीट को केवल-पढ़ने के लिए खोल सकते हैं।

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.workbooks.open(v=office.15).aspx


5
एक्सेल इंटरोप एक्सेल के साथ काम करने की अनुशंसित विधि नहीं है। यह कई मुद्दों का कारण बन सकता है और इसलिए इसकी सिफारिश नहीं की जानी चाहिए।
मैक्सवद्रव

हालांकि यह एक पुरानी पोस्ट है, मैं MaxOvrdrv से सहमत हूं, इंटरॉप का उपयोग करना एक अच्छा विचार नहीं है और इसे टाला जाना चाहिए, अगर किसी अन्य कारण से इसके लिए सर्वर पर एक्सेल की पूरी स्थापना की आवश्यकता नहीं है।
लेमार्टी

आपको यह बिल्कुल नहीं करना चाहिए।
sovemp

0

एसीई ने जेईटी की उपाधि प्राप्त की है

ऐस कार्यालय के सभी पिछले संस्करणों का समर्थन करता है

यह कोड अच्छी तरह से काम करता है!

        OleDbConnection MyConnection;
        DataSet DtSet;
        OleDbDataAdapter MyCommand;
        
        MyConnection = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\\Book.xlsx;Extended Properties=Excel 12.0;");
        MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
        DtSet = new System.Data.DataSet();
        
        MyCommand.Fill(DtSet);
        dataGridView1.DataSource = DtSet.Tables[0];
        MyConnection.Close();

1
ऐसा नहीं होता। समस्या अभी भी हो सकती है, मुझे अभी तक यह पता नहीं चला है कि, क्योंकि मेरी फाइलें 2007 के सभी एक्सेल से हैं, और उनमें से कुछ काम करती हैं, उनमें से कुछ नहीं।
हेनरिक

क्या आपके पास उस दावे का स्रोत है? मैं खुद को नहीं जानता, बस सोच रहा था। :-)
मध्यौरा_सेनपाई

0

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


0

मैंने हाल ही में इस त्रुटि को एक संदर्भ में देखा था जो पहले से सूचीबद्ध उत्तरों में से किसी से मेल नहीं खाता था। यह AutoVer के साथ एक संघर्ष बन गया । वर्कअराउंड: अस्थायी रूप से AutoVer अक्षम करें।


0

मेरे पास हाल ही में यह "System.Data.OleDb.OleDbException (0x80004005): बाहरी तालिका अपेक्षित प्रारूप में नहीं है।" त्रुटि होती है। मैं Microsoft Access 2010 रनटाइम पर भरोसा कर रहा था। 12 दिसंबर 2018 को मेरे सर्वर पर स्वचालित रूप से इंस्टॉल किए गए अपडेट से पहले मेरा सी # कोड Microsoft.ACE.OLEDB.12.2 प्रदाता का उपयोग करके ठीक चला। 12 दिसंबर 2018 से अपडेट होने के बाद मैंने अपनी लॉग फ़ाइल में "बाहरी तालिका अपेक्षित प्रारूप में नहीं है" प्राप्त करना शुरू कर दिया।

मैंने Microsoft Access 2010 रनटाइम को डिसाइड किया और Microsoft Access 2013 रनटाइम को स्थापित किया और मेरा C # कोड फिर से बिना किसी "System.Data.OleDb.OleDbException (0x80004005) के साथ काम करना शुरू कर दिया: बाहरी तालिका अपेक्षित प्रारूप में नहीं है।" त्रुटियों।

2013 संस्करण जो मेरे लिए इस त्रुटि को तय करता है https://www.microsoft.com/en-us/download/confirmation.aspx?id=39318

2010 संस्करण जो 12 दिसंबर को मेरे सर्वर पर स्वचालित रूप से स्थापित किए गए अद्यतन से पहले मेरे लिए काम करता था। https://www.microsoft.com/en-us/download/confirmation.aspx?id=10910 https://www.microsoft.com/en-us/download/confirmation.aspx?id=10910

मुझे यह त्रुटि पिछले महीने एक स्वचालित प्रक्रिया में भी हुई थी। जब मैंने इसे डीबगिंग में चलाया तो C # कोड ठीक रहा। मैंने पाया कि कोड को चलाने वाले सेवा खाते को C: \ Windows \ Temp फ़ोल्डर की अनुमति की भी आवश्यकता थी।


0

मेरा दायरा टेम्प्लेट डाउनलोड से बना होता है और जब यह डेटा से भर जाता है तो टेम्प्लेट को सत्यापित करता है,

1) हेडर पंक्ति के साथ एक टेम्पलेट (.xlsx) फ़ाइल डाउनलोड करें। फ़ाइल Openxml का उपयोग करके उत्पन्न की गई है और यह पूरी तरह से काम कर रही है।

2) डाउनलोड की गई स्थिति से बिना किसी परिवर्तन के एक ही फ़ाइल अपलोड करें। यह कनेक्शन त्रुटि का कारण बनेगा और विफल (OLEDB कनेक्शन एक्सेल शीट को पढ़ने के लिए उपयोग कर रहा है)।

यदि डेटा भरा हुआ है तो यहां कार्यक्रम अपेक्षित रूप से काम करता है।

किसी को भी इस बात का अंदाजा है कि जिस फाइल को हम xml में बना रहे हैं उससे जुड़ी हुई है फॉर्मेट अगर हम इसे खोलते हैं और इसे एक्सेल फॉर्मेट में कन्वर्ट करते हैं और यह अच्छे से काम करता है।

पसंदीदा फ़ाइल प्रकार के साथ एक्सेल डाउनलोड करने का कोई विचार है?


आपको अपने उत्तरों में प्रश्न नहीं पूछना चाहिए, यदि आपको अपने प्रश्न के उत्तर की आवश्यकता हो तो उन्हें अलग से पूछें।
अभिषेक गर्ग

0

कुछ पुराने कोड के साथ काम करना और यह एक ही सामान्य अपवाद है। इस मुद्दे को ट्रैक करने के लिए बहुत कठिन है, इसलिए मैंने सोचा कि मैं किसी और की मदद करने के मामले में यहां जोड़ूंगा।

मेरे मामले में, प्रोजेक्ट में कहीं और कोड था जो पहले एक्सेल फाइल पर स्ट्रीमराइडर खोल रहा था , फाइल को खोलने की कोशिश की (यह एक बेस क्लास में किया गया था)।

इसलिए मूल रूप से मुझे Close()पहले स्ट्रीमराइडर ऑब्जेक्ट पर कॉल करने की आवश्यकता थी , फिर मैं ओलेडब कनेक्शन को सफलतापूर्वक खोल सकता था। इसका एक्सेल फाइल के साथ या ओलेडबोनक्शन स्ट्रिंग (जो स्वाभाविक रूप से जहां मैं पहली बार देख रहा था) के साथ कुछ नहीं करना था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.