2015-12-30 5 views
6

के साथ मेरी एक्सेल फ़ाइल के लिए फ़ाइलपैथ प्राप्त करें, मैं अपनी एक्सेल फ़ाइल के लिए फ़ाइलपैथ प्राप्त करने का प्रयास कर रहा हूं। लेकिन मैं ऐसा करने में असमर्थ हूं।शीटनाम

फ़ाइल दस्तावेज़ में है/विजुअल स्टूडियो 2013/परियोजना/ProjectName/a.xlsx

string path = Path.Combine(HttpContext.Current.Server.MapPath("~/"),"a.xlsx"); 
string SheetName="Sheet1"; 

यह यह करने के लिए गलत तरीके से है या यह सही तरीका है?

+2

आपके प्रश्न में मेरी राय में विवरण की कमी है। क्या आप हमें बता सकते हैं: 1 - 'दस्तावेज़/विजुअल स्टूडियो 2013/प्रोजेक्ट/प्रोजेक्टनाम' वेब प्रोजेक्ट की जड़ है; 2 - http कोड के जवाब में इस वेब प्रोजेक्ट के संदर्भ में आपका कोड स्निपेट निष्पादित किया गया है; 3 - कोड क्या विफल है? शायद कुछ 'पथ' खोलने की कोशिश कर रहा है, लेकिन आपके कोड स्निपेट में इसकी कमी है; 4 - क्या आपने 'पथ' स्थानीय चर मूल्य का निरीक्षण करने की कोशिश की है? –

+0

@ फ्रेडरिक 1।हां यह मेरी परियोजना की जड़ है लेकिन यह एक वेब प्रोजेक्ट नहीं है। 2. मैं सिर्फ अपनी फाइल के पथ पर कॉल कर रहा हूं 3. जो कोड विफल रहता है वह स्निपेट 4 में है। आप प्रश्न 4 में क्या कहने की कोशिश कर रहे हैं? –

+0

आप इस परियोजना का उपयोग [पोस्ट] (http://tbf.me/a/Bwi3Ap) के रूप में [पोस्ट] (http://stackoverflow.com/questions/34517107) में संलग्न कर सकते हैं। मैं वही कर रहा हूं जैसा उसने किया लेकिन यह काफी समान है। –

उत्तर

1

यह मेरे अनुसार बेहतर जवाब है।

बेहतर

C:\Users\AJ1110\Documents\Visual Studio 2013\Projects\Proj\Proj 

में बचाने के लिए और

Program.cs

string pathfile = @"..\..\a.xlsx"; 
string sheetName = "Whatever_SheetName_IS!!!"; 

में यह आपकी समस्या का समाधान हो सकता है।

1

HttpContext.Current वेब संदर्भ के बाहर काम नहीं करता है।

यदि आपकी परियोजना कंसोल या विंडोज प्रोग्राम के अंदर चल रही है, तो यह HttpContext.Current के साथ काम नहीं कर सकती है। MapPath एक फ़ाइल सिस्टम पथ के लिए वेब पथ का अनुवाद करने के लिए है। ~/ एक वेब अनुप्रयोग के रूट वेब पथ को इंगित करने के लिए एक .Net सम्मेलन है।

आपको स्पष्ट करना चाहिए कि आपकी फ़ाइल वाले फ़ोल्डर को कैसे हल करें इसके बारे में आपकी आवश्यकताएं क्या हैं।

शायद आपको इसे कुछ कॉन्फ़िगरेशन फ़ाइल में रखना चाहिए (उदाहरण के लिए प्रोजेक्ट की सेटिंग प्रॉपर्टी टैब का उपयोग करके) और इसे वहां से पुनर्प्राप्त करें।

संपादित करें:

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

आपके आवेदन के उपयोग के मामलों के आधार पर इसे प्राप्त करने के कई तरीके हैं।

उदाहरण के लिए, this question देखें।

+0

1. मैं बहुत कुछ कह रहा हूं कि आप क्या कहने की कोशिश कर रहे हैं। चलिए इसे एक परिदृश्य के रूप में लेते हैं, जहां भी मुझे इस परियोजना की प्रतिलिपि बनाने के लिए अलग मशीन है, मुझे इसे बार-बार बदलना है। इसलिए मैं डीआईआर पथ प्राप्त करने की कोशिश कर रहा हूं और इसके साथ जारी रखता हूं –

+0

2. सेटिंग प्रॉपर्टी टैब का उपयोग करके आपका क्या मतलब है? आशा है कि आप समझ रहे हैं कि मैं यहां क्या करने की कोशिश कर रहा हूं। मुझे बताएं अगर आपके या किसी के पास कोई प्रश्न हैं –

+0

2. प्रोजेक्ट गुणों से (समाधान एक्सप्लोरर में प्रोजेक्ट पर राइट क्लिक करें), इसकी सेटिंग्स टैब चुनें। यह सेटिंग्स तक पहुंचने के लिए सेटिंग्स फ़ाइल और संबंधित कोड फ़ाइलों को जोड़ने के लिए कहेंगे। लेकिन यदि आपकी आवश्यकता निष्पादन फ़ोल्डर में फ़ाइल को खोजना है, तो इससे आपको बहुत मदद नहीं मिलेगी। मैं कुछ और मदद जोड़ने के लिए इस जवाब को संपादित करने जा रहा हूं। –

0

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

System.Reflection.Assembly.GetExecutingAssembly().Location 

यह अपने निष्पादन करने के लिए सापेक्ष दृष्टि (या विधानसभा और अधिक सटीक होना करने के लिए क्रियान्वित) में सोचने के लिए महत्वपूर्ण है, के बाद से अपने उत्पादन अपने विकास के वातावरण के बाहर चलाने के लिए होगा और अपने एक्सेल चाहिए अभी भी सुलभ हो।

इसके अलावा, सटीक निष्पादन असेंबली प्राप्त करना tricky in some scenarios हो सकता है।