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

时间:2016-09-14 14:19:10

标签: c# openxml filepath memorystream

我使用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而不仅仅是报告和日期。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

DateTime.Now.ToString("dd_MM_yyyy")

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