2011-02-14 7 views
11

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

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read); 

यह IOException: The process cannot access the file 'myfile.xlsx' because it is being used by another process.

देता है मुझे आशा है कि आप समझते हैं कि मैं क्या मतलब है। मैं एक्सेल फ़ाइल को खोलना चाहता हूं और जबकि माइक्रोसॉफ्ट एक्सेल में फाइल खुली है, मैं इसे सी # से पढ़ना चाहता हूं। मैं सी # शुद्ध ढांचे 4.0

+3

यदि आप अन्य प्रक्रिया –

+0

पर फ़ाइल खोले हैं, तो क्या आप सुनिश्चित नहीं हैं कि इसे प्राप्त करने का कोई तरीका नहीं है? – MonsterMMORPG

+0

कैसे करें: http://support.microsoft.com/kb/316126 – Fionnuala

उत्तर

6

मुझे लगता है कि आप अभी भी एक्सेल खोलने के दौरान फ़ाइल की प्रतिलिपि बना सकते हैं, ताकि आप फ़ाइल की एक प्रति बना सकें और फिर उसे खोल सकें। बस यह सुनिश्चित करें कि जब आप प्रतिलिपि करते हैं तो आप अपने आप को साफ कर लेंगे।

+0

हाँ यह समाधान हो सकता है :) – MonsterMMORPG

+1

इससे समस्या हल हो जाती है :) – MonsterMMORPG

+2

नहीं, यह समाधान नहीं है। यह यहां है: http://stackoverflow.com/a/898017/48082 – Cheeso

0

उपयोग कर रहा हूँ फ़ाइल की है कि सही खोलने और बंद करने को सुनिश्चित करने के लिए कृपया ग # का उपयोग कर बयान

using (FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read)) 
{ 

} 
+0

क्या आप समझ गए कि मैं क्या पूछ रहा हूं? मैं एक्सेल को बंद नहीं करना चाहता हूं और फ़ाइल माइक्रोसॉफ्ट ऑफिस एक्सेल पर खुली है, जबकि मैं इसे अपने सी # – MonsterMMORPG

0

आप एक चौथा पैरामीटर के साथ File.Open कोशिश कर सकते हैं का उपयोग कर देखो - fileshare।

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read, FileShare.Read); 

आपको लेखन पहुंच भी निर्दिष्ट करने की आवश्यकता हो सकती है।

+0

पर पढ़ना चाहता हूं, फिर भी त्रुटि – MonsterMMORPG

+0

त्रुटि देता है क्योंकि ऐसा है कि आपको इसे FileShare.ReadWrite के साथ खोलना होगा - http://stackoverflow.com देखें/प्रश्न/8977 9 6/कैसे-करें-i-open-an-already-open-file-a-net-streamreader/898017 # 898017 – splintor

3

आप Excel के पहले से खोले गए उदाहरण का उपयोग करने के लिए इंटरऑप लाइब्रेरी का उपयोग कर सकते हैं।

oExcel == (Excel.Application) System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application") 
+0

इसके लिए मुझे किस नामस्थान की आवश्यकता है? – MonsterMMORPG

+0

माइक्रोसॉफ्ट.ऑफिस.इंटरोप अधिक जानकारी के लिए बस "एक्सेल ऑटोमेशन" के लिए Google। नेट पर बहुत सारी जानकारी ;-) – Koen

+0

अन्य उत्तर को नोटिस किया गया। फ़ाइल की प्रतिलिपि वास्तव में यहां एक बेहतर तरीका है ;-) – Koen

16

आप FileShare.ReadWrite साथ इसे खोलने के लिए की जरूरत है:

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 

this answer देखें।

+0

+1 सबसे अच्छा जवाब !!! – Warlock

+0

यह अभी भी मेरे लिए एक ही त्रुटि संदेश प्राप्त करने के लिए काम नहीं कर रहा है। – jcubero

0

एक ही फ़ाइल को एक ही समय में एक से अधिक बार खोलने के लिए, इसे साझा मोड में खोला जाना आवश्यक है।

आशा है कि यह दूसरों की मदद कर सकता है।