2013-02-18 51 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