【问题标题】:How to save file in a specific folder?如何将文件保存在特定文件夹中?
【发布时间】:2018-01-23 15:25:29
【问题描述】:

我需要将 epplus 生成的 .xlsx 保存到 Desktop,所以我这样做了:

 var dlg = new SaveFileDialog
        {
           FileName = "FileName" + DateTime.Now.ToString("dd-MM-yyyy"),
           DefaultExt = ".xlsx",
           Filter = "Excel Sheet (.xlsx)|*.xlsx", 
           RestoreDirectory = true,
           InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        };

然后:

using (FileStream fs = new FileStream(dlg.FileName, FileMode.Create))
{
       package.SaveAs(fs);
}

其中package 是epplus 的ExcelPackage package。 此代码应该将文件保存到桌面,但我有两个问题:

  • 文件保存到我的应用程序的 bin 目录中
  • 当我在 dlg 定义中指定时,扩展名 xlsx 丢失

这是一个错误还是我做错了什么?

感谢您的关注。

【问题讨论】:

  • 无法复制。 FileDialog的显示和写入文件的调用之间有一些代码?
  • 您在创建文件流时检查过“dlg.FileName”的值吗?另外-如果您单击取消按钮-那么“dlg.FileName”将是“FileName23-01-2018”而没有文件扩展名-因此将准确保存在您所说的位置和方式。您需要点击保存 - 即使对话框中的一切看起来都正常。
  • 我假设您确实在某处调用了 dlg.ShowDialog()。

标签: c# epplus


【解决方案1】:

您的代码只是初始化文件对话框。您需要调用“dlg.ShowDialog();”这将使您可以选择初始文件夹以外的文件夹。确保您点击了保存按钮,如果您点击取消,您的初始化文件名​​将不会被路径修改。

如果你知道你只想保存到桌面,你可以使用 Path.Combine 方法:https://msdn.microsoft.com/en-us/library/fyy7a5kt(v=vs.110).aspx

String FilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFo‌​lder.Desktop),
    "FileName" + DateTime.Now.ToString("dd-MM-yyyy") + ".xlsx");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多