मेरे पास एक 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 संपत्ति (येल्डर द्वारा सुझाए गए अनुसार) की जाँच करके मारा जा सकता है।
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");
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
c#
C # (उच्चारण "तेज देखें") Microsoft द्वारा विकसित एक उच्च स्तरीय, सांख्यिकीय रूप से टाइप किया हुआ, बहु-प्रतिमान प्रोग्रामिंग भाषा है। C # कोड आमतौर पर Microsoft के .NET परिवार के टूल और रन-टाइम को लक्षित करता है, जिसमें .NET फ्रेमवर्क, .NET कोर और Xamarin अन्य शामिल हैं। C # या C # के औपचारिक विनिर्देश में लिखे गए कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें।