मैंने पहले ही कुछ खोज किया है, this, this, this और अधिक, लेकिन कोई सुराग नहीं है, इसलिए मुझे आपको लोगों से पूछना होगा।यह सत्यापित करने के लिए कि कोई फ़ाइल एक वैध एक्सेल स्प्रेडशीट है या नहीं?
मैं इंटरऑप के माध्यम से एक एक्सेल फ़ाइल खोलने की कोशिश कर रहा हूं, और मेरे पास Office 2007 स्थापित है, इसलिए मैं Microsoft.Office.Interop.Excel
संस्करण 14.0
का उपयोग कर रहा हूं।
जब मैं एक मान्य xls
फ़ाइल खोलने का प्रयास करता हूं, तो सब ठीक हो जाता है।
लेकिन यदि मैं इंटरऑप के माध्यम से एक अवैध फ़ाइल (बिटमैप, या निष्पादन योग्य) खोलने का प्रयास करता हूं, तो एक्सेल शिकायत या चेतावनी के बिना इसे खोलता है।
मैं कैसे पता लगा सकता हूं कि एक्सेल में एक अमान्य कार्यपुस्तिका फ़ाइल लोड है, बिना किसी अलर्ट के अवरुद्ध किए?
मैं अपने एक्सेल ऑब्जेक्ट रीडर का यूनिट परीक्षण लिखने की कोशिश कर रहा हूं। मामलों में से एक एक अवैध फ़ाइल खोलने का प्रयास करना है।
कुछ कोड मदद करने के लिए: आवेदन निर्माण:
_app = new Application()
{
Visible = false,
DisplayAlerts = false, // <-- I don't want to remove this.
AskToUpdateLinks = false,
};
वर्कबुक उद्घाटन:
_workbooks.Open(filename);
_workbook = _workbooks.get_Item(1); // 1-based.
_worksheets = _workbook.Sheets;
संपादित करें: एक्सेल लोड अवैध फाइल: बस 1 में अधिक जानकारी जोड़ने के लिए। DisplayAlerts
सही पर सेट किया जाता है, यह शिकायत (एक संवाद खोलने) कार्यपुस्तिका बताए दूषित हो रहा है, लेकिन DisplayAlerts
गलत पर सेट है, तो यह फ़ाइल बस के रूप में नीचे लोड करता है:
वैध फ़ाइल ext.csv या xls के लिए जांच के चारों ओर एक तरह से एक आसान तरीका लगता है ... – MethodMan
आप देख सकते हैं कि _app.Ready प्रॉपर्टी अवैध फ़ाइल लोड करते समय गलत हो जाती है या नहीं। सिर्फ एक विचार मैंने कोशिश नहीं की है। – Tod
@ डीजे क्राज़, मैं फ़ाइल लोड करने से पहले विस्तार से पहले ही जांच कर रहा हूं। लेकिन क्या होगा यदि कोई फ़ाइल एक्सटेंशन बदलता है और इसके बजाय .exe लोड करने का प्रयास करता है? – Machado