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)
Author by
Admin
Updated on June 12, 2022Comments
-
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 almost 11 yearsAny 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 about 8 yearsI try a lot of solution but this was the only one that works like it should! Very useful! Tks!!
-
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 over 7 yearsThis 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.