C# 内存 Stream/OpenXML 有时会在文件名中添加额外的字符

C# Memory Stream/OpenXML sometimes adds extra characters to file name

我使用 OpenXML 和 MemoryStream 导出一个 Excel 文件,它有时会在文件路径中添加额外的字符。它不会每次都发生。当我第一次加载它时,它似乎工作得很好,但在 运行 之后它开始添加额外的字符。我假设存在内存泄漏或缓冲区问题,但我对它的了解还不足以修复它。

我的代码是:

using (var stream = new MemoryStream())
{                
     report.CreatePackage(stream);

     System.Web.HttpContext.Current.Response.Clear();
     System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
     System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Report_" + DateTime.Now.ToShortDateString() + ".xlsx");
     stream.Position = 0;
     stream.CopyTo(System.Web.HttpContext.Current.Response.OutputStream);
     System.Web.HttpContext.Current.Response.Flush();
     System.Web.HttpContext.Current.Response.Close();
     System.Web.HttpContext.Current.Response.End();
 }  

它在文件路径中看起来像这样:Report_09_14_2016CAOFMLJL.xlsx 而不仅仅是报告和日期。

如有任何帮助,我们将不胜感激。

在我的机器上 DateTime.Now.ToShortDateString() 打印 14/09/2016,我猜这与系统设置有关。也许试试这个(或您需要的任何其他形式):

DateTime.Now.ToString("dd_MM_yyyy")

斜杠在 Windows 的文件名中无效。