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 的文件名中无效。
我使用 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 的文件名中无效。