2012-01-11 36 views
23

我有一個自定義非時間依賴單元格函數的Excel工作簿,我使用Interop從C#WindowsForms應用程序打開.Excel。我從中讀取四個值,不執行明確的更改/計算,然後從C#中關閉它。如何關閉 - 不保存具有自定義函數的Excel/xlsm工作簿,C#

當我試圖直接關閉(不保存),我得到一個保存提示。我懷疑這是因爲Excel將開放時的自動重新計算解釋爲創建更改,即使沒有實際的數字或公式更改。我也設置了Excel.Application.Calculation = Excel.XlCalculation.xlCalculationManual。如何防止保存提示出現,並關閉而不保存?

+2

你也可以做一個'workbook.Saved = TRUE'保存到讓Excel應用程序知道這已經保存前,不需要提示.. – nawfal 2012-07-17 14:22:00

回答

41

當您使用Excel對象時,一定要關閉該工作簿是這樣的:

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

xlApp = new Excel.ApplicationClass(); 
xlWorkBook = xlApp.Workbooks.Add("Yourworkbook"); 

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

....do your stuff 

xlWorkBook.Close(false, misValue, misValue); 

xlApp.Quit(); 

在close方法的false表示不保存更改。

+1

是的!這解決了它。謝謝! – 2012-01-11 04:24:27

+0

是否真的有必要將'System.Reflection.Missing.Value'參數傳遞給'Close'方法?我只通過虛假結束,並沒有任何問題。 – 2016-01-22 15:37:51

+1

@JeremyCook 曾經有一段時間,可能需要這樣做纔會改變點淨更新。 – Motes 2016-01-22 20:24:13