2016-09-14 5 views
0

OpenXML 및 MemoryStream을 사용하여 Excel 파일을 내보내고 파일 경로에 추가 문자를 추가하는 경우가 있습니다. 매번 발생하지는 않습니다. 내가 처음로드 할 때 잘 동작하는 것처럼 보이지만 실행 후 추가 문자를 추가하기 시작합니다. 내가 메모리 누수 또는 버퍼 문제가 있다고 가정하지만, 그것을 해결하기에 충분하지 않습니다.C# 메모리 스트림/OpenXML에서 파일 이름에 여분의 문자를 추가하는 경우가 있음

내 코드는 다음과 같습니다

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를 대신 보고서 및 날짜의.

도움을 주시면 감사하겠습니다.

+0

'Response.Clear()'가 헤더를 지우지 않는다는 것을 알고 있습니까? 다른 방법으로 : 적절한 장소에서'Response.ClearHeaders()'를 호출하면 행복한 목적을 향한 어떤 것도 변화합니까? – grek40

+0

처음 실행하면 여분의 문자가 추가되지만 이후의 모든 문자는 계속 추가됩니다. 머리글인지 또는 왜 처음에는 작동하지 않는지 확실하지 않습니다. – JRich

+0

코드가 문자열과 일치하지 않습니다. 당신은''.xlsx "'를 추가하고 있지만 결과에''.XLSX ''확장자가 있습니다. (그리고이 차이는''CAOFMLJL.XLSX"'가 추가 된 이유 일 것입니다). – Sinatr

답변

0

내 컴퓨터에서 DateTime.Now.ToShortDateString()이 14/09/2016을 인쇄합니다. 시스템 설정과 관련이 있다고 생각합니다. (당신이 필요로 formay 다른 또는) 아마 대신이 시도 :

DateTime.Now.ToString("dd_MM_yyyy") 

슬래시 Windows에서 파일 이름에 유효하지 않습니다.

+0

나는 이것이 사실이라고 생각한다. 수십 번 테스트 해봤는데 추가 된 캐릭터가 추가되지 않았습니다. 그러나 가끔씩 만 추가하는 것처럼 보였으므로 좀 더 테스트를하고 나중에 다시 오지 않으면 대답으로 표시 할 것입니다. – JRich