2009-12-10 7 views
0

나는 ado.net datatable (db 쿼리로 얻을 수 있음)에서 엄청난 양의 데이터를 내보내는 것이 필요합니다.excel export 메모리 예외

나는 다음과 같은 방법을 시도했다 : 1. workbook/worksheet @ server side ...로 엑셀 객체를 생성하고 메모리 스트림을 사용하여 클라이언트 측에 전체 문서를 작성한다.

하지만 "메모리 부족 예외"가 발생했습니다. bcoz 내 기억력이 너무 커서.

그래서 나는 새로운 방법으로이를 대체 - 다음과 같이

클라이언트 측에 혼수 상태로 구분 된 문자열로 데이터 테이블에서 각 행을 작성. 그래서, 우리가 각 행을 얻을 때, 우리는 클라이언트 측에 쓸 수 있습니다. 메모리가 사용되지 않습니다.

그러나 우리는 탁월하지 ... csv 파일에 기록 할 수있는이 방법에 의해

...

는 사람이이 상황을 처리하는 방법을 알고 있나요. Silverlight를 사용하여 서버에서 행별로 데이터를 가져 와서 클라이언트 측에 전달할 수 있습니다. 클라이언트 측에서 Excel 빌드를 수행하십시오.

답변

0

서버에서 생성 한 다음 청크로 클라이언트에 복사해야합니다.

예를 들어, this answer을 참조하십시오.

0

XL 2007의 경우 통합 문서는 기본적으로 OPEN XML 파일 형식입니다.

데이터 테이블의 데이터를 OPEN XML에 맞게 포맷 할 수 있으면 파일을 저장 한 다음 전체 파일을 다운로드하면됩니다.

오픈 XML에 대한 내용은 http://msdn.microsoft.com/en-us/library/aa338205.aspx