C# SaveFileDialog winforms出现问题

C# SaveFileDialog winforms出现问题,c#,winforms,visual-studio-2010,savefiledialog,C#,Winforms,Visual Studio 2010,Savefiledialog,这是我的密码: SaveFileDialog sd = new SaveFileDialog(); sd.Title = "Select Excel Sheet to Export or Create New !"; sd.Filter = "Excel files (*.xls)|*.xls"; sd.FilterIndex = 0; sd.ShowDialog(); if (sd.FileNa

这是我的密码:

        SaveFileDialog sd = new SaveFileDialog();
        sd.Title = "Select Excel Sheet to Export or Create New !";
        sd.Filter = "Excel files (*.xls)|*.xls";
        sd.FilterIndex = 0;

        sd.ShowDialog();

        if (sd.FileName != null)
        {
            AddWorksheetToExcelWorkbook(sd.FileName);
        }
这是一个简单的10行代码,我已经使用了很长时间,从来没有出现过任何问题,但最近我正在使用它,但当我需要写入文件时,我会出错,如下所示:

文件名。。找不到。检查文件名的拼写,并验证文件位置是否正确

看到下面的图片,写下文件名,点击保存按钮,我只会在创建新文件时出错,而不是在选择现有文件时。

为什么会发生这种情况我已经多次使用此代码,而且我看到在我保存它的文件夹上没有创建任何文件,那么为什么
SaveFileDialog
没有保存文件?我是否遗漏了什么

更新:

如果我只在写入名称并按save时选择一个已存在的文件问题,则工作正常。

您需要调用该方法才能创建或覆盖该文件

if (!String.IsNullOrEmpty(sd.FileName))
{
   using(var fileStream = sd.OpenFile())
   {
      //you can use the stream if you need it (otherwise just close it)
   }

   AddWorksheetToExcelWorkbook(sd.FileName);    
}
MSDN页面中的注意事项

出于安全目的,此方法使用 选择名称并以读/写权限打开它。这可能导致 如果选择要保存到的现有文件,则会意外丢失数据。 要在保留现有数据的同时将数据保存到现有文件,请使用 使用在中返回的文件名打开文件的文件类 文件名属性


AddWorksheetToExcelWorkbook
做什么?@DanielA.White简单导出到excel,但这在这里并不重要。如果在SaveFile对话框中选择已存在的工作表,它可以正常工作。问题是当我创建新文件时,文件没有导出到。可能我需要重新启动笔记本电脑。它已打开了几天…:)<代码>仅当我写下姓名并按save键时发出-我不明白-请您用清晰的步骤编辑此文件以重现异常。@Jeremythonpson肯定会有更新。但我已经多次这样做了,它是有效的,为什么现在有什么不同呢?我运行了另一个工具,它可以很好地导出。唯一不同的是,它可以导出到txt文件。如果完全相同的代码在其他地方工作,那么我怀疑是其他原因导致了这个问题。扩展名不应该有什么区别(即,如果您将
txt
替换为
xls
,即使它不是有效的xls文件,也应该创建一个文件)。我只能猜测其他代码使用
file
类手动创建文件,而不是
SaveFileDialog
OpenFile
方法。是的,上面的代码才是最重要的,如果我使用SaveFileDialog保存文件,它至少应该创建文件,但是它没有这样做,也没有错误…执行上面的代码现在我得到错误:Excel无法打开文件“testNew.xlsx”,因为文件格式或文件扩展名无效。验证文件是否已损坏,以及文件扩展名是否与文件格式匹配