停止生成输出文件的副本

时间:2012-09-11 13:59:21

标签: c# winforms excel

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

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

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

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

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
}

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

我总是按照DarkXphenomenon的建议做的,我在表单的文件名中添加了一个温和的时间戳:

<filename>_YYMMDD_HHMMSS.ext

虽然这并不适用于所有情况,但它有很多优点:

  1. 简单,有效

  2. 它使我不必编写各种回转来与用户就名称,覆盖,重命名,取消等来回来回。通常深入代码从来没有打算让用户接口

  3. 它使自动化变得更加容易。

  4. 它使测试更容易。

  5. 它可以更轻松地诊断用户问题:毫无疑问,文件的创建时间或创建顺序。

答案 3 :(得分:-1)

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

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

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