繁体   English   中英

如何在发生冲突时保存使用 C# 创建的 excel 文件时禁用提示对话框?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM