2013-02-18 24 views
1

重复“已存在”对话框我正在编程创建一个Excel文件与Microsoft.Office.Interop.Excel框架。当需要保存时,我想给用户选择命名和保存位置,所以我使用System.Windows.Forms.SaveFileDialog。一切正常,除非用户选择一个已经存在的文件名,那么SaveFileDialog.ShowDialog()Excel.Application.SaveAs()都会显示“这个文件已经存在 - 你确定要覆盖吗?”警告,当然不需要。我看不到一种方法来压制他们中的任何一个。解决这个问题的最好方法是什么?当我使用SaveFileDialog和Excel.SaveAs

+1

查看有关DisplayAlerts这个类似的答案:http://stackoverflow.com/questions/2243995/how-can-i-overwrite-an-other-excel-file-without-the-dialog-really-want to-overw – 2013-02-18 22:42:59

+0

@BradNabholz - 这是我正在寻找的答案,设置'myExcelApp.Application.DisplayAlerts = false'。如果你想把这个作为答案,我会给你信贷。 – Conrad 2013-02-19 14:25:37

回答

0

它可以满足您的要求。

 try 
     { 
      Microsoft.Office.Interop.Excel.Application my_app = null; 
      Microsoft.Office.Interop.Excel.Workbook my_book = null; 
      Microsoft.Office.Interop.Excel.Worksheet my_sheet = null; 
      Microsoft.Office.Interop.Excel.Range rng = null; 
      object missing = Type.Missing; 

      my_app = new Microsoft.Office.Interop.Excel.Application(); 
      my_book = my_app.Workbooks.Add(missing); 
      my_sheet = (Microsoft.Office.Interop.Excel.Worksheet)my_book.ActiveSheet; 

      rng = my_sheet.get_Range("A1", missing); 
      rng.Value2 = "Welcome Man"; 

      SaveFileDialog s = new SaveFileDialog(); 
      s.ShowDialog(); 

      if (s.OverwritePrompt) 
      { 
       my_book.SaveCopyAs(s.FileName); 
       my_book.Close(false, s.FileName, missing); 

      } 
      else 
      { 
       my_app.Save(s.FileName); 
       my_book.Close(true, s.FileName, missing); 
      } 

     } 
     catch 
     { 

     } 
+0

没有方法'Microsoft.Office.Interop.Excel.Application.Save()'和'Microsoft.Office.Interop.Excel.Workbook.Save()'没有超载,它需要1个参数。 – Conrad 2013-02-19 14:32:22

+0

我正在使用Microsoft.Office.Interop.Excel版本12.0.0.0,它们的Save()和saveCopyAs()方法将文件名称作为它们的参数。 – user1019453 2013-02-21 04:30:10