2009-11-09 3 views
8

का उपयोग कर एक्सेल कार्यपुस्तिका खोलते समय त्रुटि मैं एक एक्सेल कार्यपुस्तिका खोलने और इसमें वर्कशीट प्राप्त करने का प्रयास कर रहा हूं। Excelapp.workbooks.Open लाइन HRESULT से के रूप मेंसी # कोड

System.Runtime.InteropServices.COMException एक अपवाद फेंक है: Microsoft.Office.Interop.Excel.Workbooks.Open पर 0x800A03EC

यहाँ मेरी कोड है :

Excel.Application excelApp = new Excel.ApplicationClass(); 
Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(strWBPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, true); 

StrWbPath मेरा एक्सेल स्थान है। मैं 2007 एक्सेल का जिक्र कर रहा हूं और संस्करण 12.0.0.0 के Microsoft.office.interop.excel को जोड़ा गया है।

+0

यह है आवेदन किस प्रकार को जाता है: मेरे लिए समाधान सिर्फ फ़ाइल खोलने से पहले एन हमें वर्तमान स्थान निर्धारित करने के लिए किया गया था? कंसोल ऐप? asp.net/winforms? – shahkalpesh

+0

Asp.net एप्लिकेशन – Amrita

उत्तर

0

क्या होगा यदि आप System.Reflection.Missing.Lalue की बजाय टाइप करें। लापता?

सादर,

एम

0

कौन सा वर्ग आप उपयोग कर रहे हैं?

Microsoft.Office.Interop.Excel.ApplicationClass 

अगर यह तो

Microsoft.Office.Interop.Excel.Application 
5

करने के लिए इसे बदलने का प्रयास करें (इस पुराने सवाल का जवाब देने के लिए खेद है, लेकिन यह इस समस्या के लिए गूगल परिणाम # 1 है और सही जवाब नहीं है)।

त्रुटि तब होती है क्योंकि एक्सेल सोचता है कि वर्कबुक दूषित हो गया है। एक्सेल फ़ाइल खोलते समय, अंतिम पैरामीटर इस स्थिति को संभालने के लिए एक्सेल बताता है। डेटा पुनर्प्राप्त करने के लिए इसे निर्देश देने के लिए Microsoft.Office.Interop.Excel.XlCorruptLoad.xlExtractData पास करें (यह एक पॉपअप खुल जाएगा जो उपयोगकर्ता एक्सेल ने फ़ाइल को दूषित होने पर डेटा निकालने का प्रयास किया है)।

हालांकि, मैंने देखा कि यह समस्या तब भी हो सकती है जब आप जिस कार्यपुस्तिका को खोलने की कोशिश कर रहे हैं, वह आपके एक्सेल से अलग लोकेल है (किसी अन्य भाषा सेटिंग का उपयोग कर मशीन पर सहेजा गया था) या आपके सिस्टम में एन-लोकल लोकेल नहीं है सेट।

हालांकि यह बेहद बेवकूफ है, इसे दूर करना आसान है।

static System.Globalization.CultureInfo oldCI; 
oldCI = System.Threading.Thread.CurrentThread.CurrentCulture; 
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); 
xlWorkBook = xlApp.Workbooks.Open(filePath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, Microsoft.Office.Interop.Excel.XlCorruptLoad.xlExtractData); 
System.Threading.Thread.CurrentThread.CurrentCulture = oldCI; 

क्रेडिट this page