2016-08-31 49 views
0

我有一個winform應用程序,我試圖在不顯示保存提示的情況下關閉excel。在谷歌和stackoverflow尋找解決方案後,這是我想出了,但它不適合我。無法在不顯示提示的情況下關閉excel

string filepath = string.Empty; 
       string reportname = lblreportname.Text; 
       filepath = Application.StartupPath + "\\StandardReports\\" + reportname + ".xls"; 

       Microsoft.Office.Interop.Excel.Application xlApp; 
       Microsoft.Office.Interop.Excel.Workbook xlWorkBook; 
       Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; 
       object misValue = System.Reflection.Missing.Value; 

       xlApp = new Microsoft.Office.Interop.Excel.Application(); 
       xlWorkBook = xlApp.Workbooks.Open(filepath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
       List<string> WorksheetList = new List<string>(); 

       xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(lsvSelectedQ.SelectedItem.ToString()); 

       Microsoft.Office.Interop.Excel.Range objRange = null; 

       objRange = (Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[1, 5]; 
       string intrvl = objRange.Value.ToString(); 

//more code 

xlApp.DisplayAlerts = false; 
       xlWorkBook.Save(); 
       xlWorkBook.Close(); 
       xlApp.DisplayAlerts = true; 
       xlApp.Quit(); 

隨着xlApp.DisplayAlerts = false;我能夠取消提示,但我也無法關閉Excel。我仍然可以在任務管理器中看到excel進程。

+0

[VBA workbooks.Close的可能的複製而不會被提示,如果用戶想保存?](http://stackoverflow.com/questions/11220537/vba-workbooks-close-without-being-prompted-to-if-the-user-wantst o-save) –

+0

@AxelKemper我正在尋找一個C#解決方案。或者可以使用在線工具輕鬆轉換爲C#的Vb解決方案。你提到的帖子有vba解決方案。 – Arbaaz

+0

你有沒有嘗試刪除第二個'DisplayAlerts'部分?我做了'DisplayAlerts = false','Save()','Close()'和'Quit()',它對我來說很好用 – uTeisT

回答

0

變化

xlWorkBook = xlApp.Workbooks.Open(filepath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 

xlWorkBook = xlApp.Workbooks.Open(filepath, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 

參數xlApp.Workbooks.Open()

Workbook Open(string Filename, object UpdateLinks, object ReadOnly, object Format, object Password, object WriteResPassword, object IgnoreReadOnlyRecommended, object Origin, object Delimiter, object Editable, object Notify, object Converter, object AddToMru, object Local, object CorruptLoad); 
+0

這段代碼給了我一個錯誤,即excel無法保存,因爲它處於只讀模式,因此在打開excel時將false設置爲只讀。它不會給我任何錯誤,但它也不會關閉任務管理器中的excel進程。 – Arbaaz

+0

好吧,@Arbaaz因爲你沒有在你的第一個帖子中發佈實際的異常,你應該有,我自己測試了它,正如你在上面的評論中提到的那樣,這個異常是'附加信息:不能保存爲這個名稱。文檔是以只讀方式打開的,這在您以'只讀模式打開()'Excel文檔時非常有意義! '.Open()'文檔時,首先將'true'改爲'false'。我會相應地更新答案。 – uTeisT

+0

我不是因爲缺少只讀部分而責怪你。正如我在評論中已經提到的那樣,我發現我需要將readonly設置爲false,然後我才做到。但它仍然沒有從taskmanager中刪除excel進程。然而,我發現了另一種解決我的問題的方法。但我感謝你的努力。 – Arbaaz

相關問題