मेरे पास एक C # एप्लिकेशन है जो एक्सेल फाइल बनाता है। लेकिन अगर फ़ाइल को खुला छोड़ दिया जाता है और ऐप दूसरी बार चलाया जाता है, तो यह IO अपवाद को फेंक देता है (क्योंकि, कोड में मैं मौजूदा फ़ाइल को नए के साथ बदल रहा हूं) अब, मैं यह जांचना चाहता हूं कि क्या फ़ाइल खुली है और फ़ाइल को मार दें excel.exe प्रक्रिया जो इस फ़ाइल को संदर्भित कर रही है। क्या कोई तरीका है जिससे इसे हासिल किया जा सकता है?

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

xlFilePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
File.Copy(xlFilePath + "\\file.xlsx", String.Format("{0}\\OutputFile{1}.{2}.xlsx", xlFilePath, DateTime.Now.Year, DateTime.Now.Month), true);
xlFilePath = Path.Combine(xlFilePath, String.Format("{0}\\OutputFile{1}.{2}.xlsx", xlFilePath, DateTime.Now.Year, DateTime.Now.Month));

appl = new Excel.Application(Visible = false);
wbookss = appl.Workbooks;
wbook = wbookss.Open(xlFilePath);
//Excel.Worksheets wsheetss = appl.Worksheets;
wsheet = wbook.Sheets["Sheet1"];

Application_GenerateReport(wsheet);
Clipboard.Clear();
wbook.Close(true);
wbookss.Close();
appl.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(wsheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wbookss);
System.Runtime.InteropServices.Marshal.ReleaseComObject(appl);

संपादित करें: यदि अंतिम रन में कोई अपवाद था, तो फ़ाइल खुली रहती है। यदि इसे किसी उपयोगकर्ता द्वारा खोला जाता है, तो इसे MainWindowTitle संपत्ति (येल्डर द्वारा सुझाए गए अनुसार) की जाँच करके मारा जा सकता है।

0
SharpCoder 27 नवम्बर 2015, 08:49

1 उत्तर

एक और उपाय हो सकता है:

System.Diagnostics.Process.Start("CMD.exe","taskkill /f /im excel.exe");

यह लाइन कमांड प्रॉम्प्ट कहेगी और कमांड taskkill रन करेगी।

इस तरह से सभी ओपनिंग एक्सेल प्रोग्राम मारे जाएंगे।

अपडेट किया गया: (एक फ़ाइल के लिए)

System.Diagnostics.Process.Start("CMD.exe","taskkill /FI "WindowTitle eq Microsoft Excel - filename.xls");
1
Tony Wu 27 नवम्बर 2015, 08:00