![](/img/trans.png)
[英]How to prevent resource leaks while using Open/Save file dialog in c#
[英]How to disable the prompt dialog when I save the excel file created using C# while conflict occurs?
我使用 C# 创建了一个 excel 文件,并在SaveAs()
函数中将ConflictResolution
参数设置为Excel.XlSaveConflictResolution.xlLocalSessionChanges
。
我还将app.UserControl
设置为 false,但提示对话框将始终显示。
我该怎么做才能禁用对话框
string fileName = "f:\\ok.xlsx";
object missing = Type.Missing;
Excel.Application app = new Excel.Application();
app.Visible = false;
app.UserControl = false;
Excel.Workbook book = app.Workbooks.Add(missing);
Excel.Worksheet sheet = book.ActiveSheet as Excel.Worksheet;
sheet.Name = "s1";
sheet.Cells[1 , 1] = "id";
book.SaveAs(fileName , Excel.XlFileFormat.xlWorkbookDefault ,
missing , missing , missing , missing ,
Excel.XlSaveAsAccessMode.xlNoChange ,
Excel.XlSaveConflictResolution.xlLocalSessionChanges ,
missing , missing , missing , missing);
book.Close(missing , missing , missing);
app.Quit();
为了在写入文件时禁用 Excel 的警报,只需使用.DisplayAlerts = false;
我目前用于保存 Excel 文件的示例代码:
public void SaveExcelFile(Excel.Application app, string exportPath)
{
try
{
//Stops from asking to overwrite
app.DisplayAlerts = false;
Excel._Worksheet sheet = app.ActiveSheet;
//Save and close
sheet.SaveAs(exportPath);
}
catch (Exception ex)
{
//If something fails, show the error
Console.WriteLine("ERROR: Failed to save Excel file! " + ex);
}
finally
{
//Makes sure that there aren't any lingering Excel processes
app.Quit();
}
}
对我来说就像一种魅力。 此代码段的重要部分是app.DisplayAlerts = false;
线。 这将停止询问您是要保存文件还是覆盖同名的现有文件。 如果您不想因担心丢失数据而自动覆盖文件,那么我不建议禁用警报。
注意:将其全部包装在try-catch
中并不总是最佳实践。 对于使用此方法的程序的复杂性,我知道可能发生错误的位置( .SaveAs(exportPath);
以防提供的exportPath
不存在或输入错误或任何其他原因引发错误)。 最好只包装sheet.SaveAs(exportPath);
在try-catch
只是为了确定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.