2013-07-01 26 views
7

我使用Microsoft Office互操作編輯一些Excel文件,並當我關閉他們,我用試圖退出C#的Excel工作簿,而不對話框

outputExcelWorkBook.Close(false, paramMissing, paramMissing); 

,但對話框仍然出現,即使我通過作爲第一個參數的是false。我也嘗試過true並給它一個文件路徑作爲第二個參數,但是在這兩種情況下,出現一個對話框詢問我是否想在關閉之前保存。誰能告訴我這裏發生了什麼?

回答

12

嘗試將Application.DisplayAlerts屬性設置爲false。對於大多數自動化例程,您可能會發現將此屬性設置爲false非常有用。記得在返回之前恢復先前的值。

Application applicationInstance = ...; 
var oldDisplayAlertsValue = applicationInstance.DisplayAlerts; 
applicationInstance.DisplayAlerts = false; 
try 
{ 
    outputExcelWorkBook.Close(false, Missing.Value, Missing.Value); 
} 
finally 
{ 
    appliationInstance.DisplayAlerts = oldDisplayAlertsValue; 
} 
3

這爲我工作:

  1. 啓動Excel的

  2. 打開工作簿

  3. 獲取活動工作表進行編輯(添加 「文本」 到細胞[ 2,2])

  4. 用單個關閉工作簿這意味着「保存更改」

  5. 沒有顯示對話框。

注意:當我在沒有參數的情況下調用Close時,系統會提示保存更改。

Microsoft.Office.Interop.Excel.Application excel = new Application(); 
    Microsoft.Office.Interop.Excel.Workbook workBook = 
     excel.Workbooks.Open(fileLocation); 
    Microsoft.Office.Interop.Excel.Worksheet sheet = workBook.ActiveSheet; 
    sheet.Cells[2, 2] = "Text"; 
    workBook.Close(true); 
    excel.Quit();