2010-06-14 8 views
2

내 asp.net 응용 프로그램에 기준 페이지가 있습니다. 사용자가 보고서 버튼을 클릭하면 첫 번째로 새 페이지에서 결과가 데이터 격자에 바인드 된 다음이 페이지는 컨텐트 유형 변경 방법으로 Excel 파일로 내보내집니다.큰 데이터를 Excel로 내보내는 방법

정상적으로 작동하지만 많은 양의 데이터가 오면, 시스템. 출력 메모리 예외가 발생합니다.

누구나이 문제를 해결할 방법이나 다른 유용한 기술을 알고 있습니까?

답변

6

응용 프로그램이 전체 Excel 스프레드 시트를 메모리에 작성한 다음 완료되면 사용자에게 전달하려고하기 때문에 이러한 현상이 발생할 수 있습니다. 대용량 데이터 세트의 경우 사용 가능한 모든 메모리를 쉽게 사용할 수 있으며 대부분의 경우 응용 프로그램이 나머지 사용자의 속도를 크게 저하시킵니다.

대신 사용자에게 데이터 스트리밍을 시도 할 수 있습니다. 이렇게하면 데이터 세트의 크기에 관계없이 동일한 양의 메모리가 사용됩니다. Excel 스프레드 시트의 바이트를 가져 오거나 단순히 데이터를 CSV로 변환 한 다음 HTTP 응답 유형을 설정하고이를 사용자에게 스트리밍 할 수 있습니다. 여기

은 예입니다

byte[] reportDoc = GetExportExcel(); 
context.Response.ContentType = "application/vnd.ms-excel"; 

//set the content disposition header to force download 
context.Response.AddHeader("Content-Disposition", "attachment;filename=" + 
        "Export.xls"); 

//write the file content byte array 
context.Response.BinaryWrite(reportDoc); 

http://bytes.com/topic/asp-net/answers/326796-example-streaming-excel-browser-download에서 상세한 튜토리얼이 있습니다

0

엑셀 또한 내가 주위 65K 생각하는 기록의 최대 수,하지만 직접하지 않을 수있다 문제의 결과가 표시되지만 작업하는 중에 오류가 발생하는 경우 계속 표시 될 수 있습니다.

+2

한도는 한 장에 불과하며 이전 XLS 파일 형식의 문제 일뿐입니다. – Moulde

관련 문제