0

这是我的代码:

        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不保存文件我错过了什么?

更新 :

如果我仅在输入名称并按保存时选择已经存在的文件问题,则工作正常。

4

1 回答 1

2

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

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 页面的警告

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

于 2013-09-11T23:58:51.837 回答