C# 停止生成输出文件的副本

C# 停止生成输出文件的副本,c#,winforms,excel,C#,Winforms,Excel,我有一个应用程序,通过点击生成报告按钮,在所有材料的末尾生成报告。报告以Excel格式生成。问题是,每当我创建一个报表时,我都可以在同一位置创建另一个同名报表。它基本上覆盖了第一份报告 我想给用户一个框,说明您可以生成具有相同名称或名称已存在的报告,并选择其他名称 谢谢你的帮助 保存文件前,检查同名文件是否已存在,如果已存在,请提供重命名文件。大概是这样的: if(File.Exists(proposedFileName)){ showDialog("file exists, please

我有一个应用程序,通过点击生成报告按钮,在所有材料的末尾生成报告。报告以Excel格式生成。问题是,每当我创建一个报表时,我都可以在同一位置创建另一个同名报表。它基本上覆盖了第一份报告

我想给用户一个框,说明您可以生成具有相同名称或名称已存在的报告,并选择其他名称


谢谢你的帮助

保存文件前,检查同名文件是否已存在,如果已存在,请提供重命名文件。大概是这样的:

if(File.Exists(proposedFileName)){
   showDialog("file exists, please choose other name");
}

在保存文件之前,请检查具有此名称的文件是否已存在,如果已存在,请提供重命名该文件。大概是这样的:

if(File.Exists(proposedFileName)){
   showDialog("file exists, please choose other name");
}

在保存文件之前,您应该知道要将其保存为什么文件名。如果是,那么只需测试文件是否已经存在。如果是,则提示用户输入新名称并将其另存为新名称,例如

string filename = @"C:\File.txt";

if(File.Exists(filename)){
    // Prompt for new one.
    // save the report to the new name instead.    
}else
{
   // save to filename
}

在保存文件之前,您应该知道要将其保存为什么文件名。如果是,那么只需测试文件是否已经存在。如果是,则提示用户输入新名称并将其另存为新名称,例如

string filename = @"C:\File.txt";

if(File.Exists(filename)){
    // Prompt for new one.
    // save the report to the new name instead.    
}else
{
   // save to filename
}

在创建报告之前,您可以遍历现有文件,检查名称是否已经存在,并给出正确的错误消息

            string newFileName = "new file";
            string[] fileNames = Directory.GetFiles("path");

            foreach (string file in fileNames)
            {
                if (file == newFileName)
                {
                    MessageBox.Show("Error");
                    break;
                }
            }

在创建报告之前,您可以遍历现有文件,检查名称是否已经存在,并给出正确的错误消息

            string newFileName = "new file";
            string[] fileNames = Directory.GetFiles("path");

            foreach (string file in fileNames)
            {
                if (file == newFileName)
                {
                    MessageBox.Show("Error");
                    break;
                }
            }

我总是按照DarkXphenomenon的建议去做,在表单的文件名上附加一个mildate时间戳:

<filename>_YYMMDD_HHMMSS.ext
\u yymmd\u HHMMSS.ext
虽然这并不适用于所有情况,但它有很多优点:

  • 它很简单,而且有效

  • 它使我不必编写各种各样的循环,以便与用户在名称上来回切换、覆盖、重命名、取消等。这些循环通常深入到从未打算有用户界面的代码中

  • 它使自动化更加容易

  • 它使测试更容易

  • 它使诊断用户问题变得更容易:毫无疑问,文件是在什么时候创建的,或者是以什么顺序创建的


  • 我总是按照DarkXphenomenon的建议去做,在表单的文件名上附加一个mildate时间戳:

    <filename>_YYMMDD_HHMMSS.ext
    
    \u yymmd\u HHMMSS.ext
    
    虽然这并不适用于所有情况,但它有很多优点:

  • 它很简单,而且有效

  • 它使我不必编写各种各样的循环,以便与用户在名称上来回切换、覆盖、重命名、取消等。这些循环通常深入到从未打算有用户界面的代码中

  • 它使自动化更加容易

  • 它使测试更容易

  • 它使诊断用户问题变得更容易:毫无疑问,文件是在什么时候创建的,或者是以什么顺序创建的


  • 为什么不将时间戳附加到文件名?为什么不将时间戳附加到文件名?File.Exists()为您这样做。File.Exists()为您这样做。