2013-07-01 29 views
7

Tôi đang sử dụng Microsoft Office Interop để chỉnh sửa một số file excel và khi tôi đóng chúng tôi sử dụngĐang cố gắng để thoát C# Excel Workbook mà không có một hộp thoại

outputExcelWorkBook.Close(false, paramMissing, paramMissing); 

Tuy nhiên, một hộp thoại vẫn đi lên, mặc dù tôi đã thông qua false làm thông số đầu tiên. Tôi cũng đã thử nó với true và cho nó một đường dẫn tập tin như tham số thứ hai nhưng trong cả hai trường hợp một hộp thoại đi lên hỏi tôi nếu tôi muốn lưu trước khi đóng. Bất cứ ai có thể cho tôi biết những gì đang xảy ra ở đây?

Trả lời

12

Thử đặt thuộc tính Application.DisplayAlerts thành false. Bạn có thể thấy hữu ích khi đặt thuộc tính này thành false cho phần lớn các quy trình tự động hóa của bạn. Nhớ khôi phục giá trị trước đó trước khi trở về.

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

này đã làm việc cho tôi:

  1. Tiến Excel

  2. Mở workbook

  3. Lấy tờ hoạt động và thực hiện một chỉnh sửa (thêm "Text" để di [ 2,2])

  4. Đóng sổ làm việc với một đoạn duy nhất mét đúng nghĩa là "lưu thay đổi"

  5. Không có hộp thoại nào được hiển thị.

Lưu ý: Khi tôi gọi Đóng mà không có tham số, tôi được nhắc lưu thay đổi.

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(); 
Các vấn đề liên quan