2009-06-30 6 views
2

여러 Excel 워크 시트 (새 스프레드 시트/Excel 파일)로 내보내는 DataTable이 있습니다. 내가 가진 코드에 이미 존재하는 "솔루션"은 두 개의 중첩 된 루프이며, 모든 행과 열을 반복하고 데이터를 셀 단위로 삽입합니다. 프로세스가 10 분 이상 걸리는 이상적인 방법은 아닙니다. 결과 스프레드 시트가 8.5MB이기 때문에 상당한 양의 데이터가 있지만 더 빠른 방법이 있어야합니다.DataTables를 여러 Excel 워크 시트로 내보내기

저는 Office Interop 라이브러리를 사용하고 있습니다. CSV를 가져올 수있는 어딘가에있는 것을 기억합니다. 이 경우 데이터 테이블을 CSV로 변환 한 다음 Excel로 가져 오는 것이 더 빠릅니까? 그렇다면 어떻게해야합니까?

+0

경고 : Excel은 데이터베이스가 아닙니다. 그것 같이 사용되는 경우에, 결국 부서 질 것입니다. –

+0

네, 괜찮습니다. 데이터베이스에서 데이터를 읽고, 일부 계산을하고, DataTable에서 지원하는 여러 DataGrid에 결과를 표시 한 다음 (일부 이유로)이를 스프레드 시트로 내 보냅니다. –

답변

2

아마도 가장 좋은 방법은 Range 개체에 Value 속성 설정기를 사용하여 처리 속도를 높이는 것입니다. 각 셀을 개별적으로 설정하는 것보다 훨씬 빠르게 작동하는 배열을 사용할 수 있습니다. http://support.microsoft.com/kb/302096에서 샘플을 볼 수 있습니다.

+0

A-ha, 좋아 보인다. 나는이 일을 수행하고 무슨 일이 일어날지를 볼 것입니다 ... –

0

은 Excel과 비슷한 API를 사용하지만 10 분에서 몇 초 사이의 시간이 소요됩니다 (실제로 8.5MB 통합 문서를 생성하는 데 현대 서버에서 1 초당 <이 걸림). SpreadsheetGear에는 IRange.CopyFromDataTable 메서드가 포함되어 있습니다.

라이브 ASP.NET 샘플 (C# & VB) here을보고 평가 here을 다운로드 할 수 있습니다.

면책 조항 : 소유권 SpreadsheetGear LLC

+0

와우, 정말 좋아 보이는데, 이것은 내부 도구 일 뿐이므로 가격을 정당화 할 수는 없습니다. –