C# and Excel Interop issue, Saving the excel file not smooth

18,781

Solution 1

You need to use Workbook.SaveAs instead of Application.Save:

Excel.Application app = new Excel.Application();
Excel.Workbook wb = app.Workbooks.Add(missing);
...
wb.SaveAs(@"C:\temp\test.xlsx", missing, missing, missing, missing,
          missing, Excel.XlSaveAsAccessMode.xlExclusive,
          missing, missing, missing, missing, missing);

Solution 2

Setting the following properties might also help:

excelApp.DisplayAlerts = false;
excelApp.ScreenUpdating = false;
excelApp.Visible = false;
excelApp.UserControl = false;
excelApp.Interactive = false;

Solution 3

just set the ActiveWorkbook.Saved property to true and you can Quit() without any Dialog box;

Solution 4

Well, here's how Microsoft does it:

// Save the Workbook and quit Excel.
m_objBook.SaveAs(m_strSampleFolder + "Book1.xls", m_objOpt, m_objOpt, 
    m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, 
    m_objOpt, m_objOpt, m_objOpt, m_objOpt);
m_objBook.Close(false, m_objOpt, m_objOpt);
m_objExcel.Quit();

See one of their KB articles.

Solution 5

ExcelApp.Interactive = false suppresses any dialog box.

excelApp.ActiveWorkbook.SaveAs(exportDirectory)

Share:
18,781
Admin
Author by

Admin

Updated on June 12, 2022

Comments

  • Admin
    Admin almost 2 years

    I could Open and Write to the excel file, but when I try to save the file by passing a path to it, the save operation prompts with the Save dialog. I was expecting it to quitely Save the file at the specified path

    The code is as below:

    excelApp.Save(exportToDirectory);
    excelApp.Quit();
    

    where, exportToDirectory is: "C:\files\strings.xlsx".

    PS: I have already checked with the excel version and similar issue.

    Thanks

  • Hue Man
    Hue Man almost 11 years
    Any idea what the numerical value for Excel.XlSaveAsAccessMode.xlExclusive is? I need to pass this to this function in a windows script file.
  • Fryla- Cristian Marucci
    Fryla- Cristian Marucci about 8 years
    I try a lot of solution but this was the only one that works like it should! Very useful! Tks!!
  • killercowuk
    killercowuk about 8 years
    @MrVimes Totally late to the party for you, however here they are for future reference: public enum XlSaveAsAccessMode { xlNoChange = 1, xlShared = 2, xlExclusive = 3 }
  • ytoledano
    ytoledano over 7 years
    This worked best for me and not the highest rated answers. What I liked about this solution is that it didn't affect other Excel files opened by user.