2010-08-11 5 views
0

나는 파일에> 200000 행을 초과하는 파일이 있다고 가정 해보십시오. C# asp.net을 사용하여이 파일의 partcular 열 값을 검색하기 위해 구현할 수있는 가장 빠른 방법은 무엇입니까? 어떠한 제안.asp.net에서 Excel 파일을 검색하는 방법

+0

조금 더 자세히 설명해 주시겠습니까? 파일이 변경되거나 메모리에 캐시 할 수 있습니까? 이미 파일을 읽는 특별한 방법이 있습니까? ExcelHelpers의 경우 –

답변

2

1) 파일 내용을 잘 캐시 할 수 있고 (너무 크지 않고 파일이 변경되지 않는 등) 2) 파일을 읽을 수있는 메커니즘이 없다고 가정하면 파일을 한 번 읽습니다. '파일에 읽기'의 일환으로 http://www.filehelpers.com/example_exceldatalink.html

@ 자신의 엑셀 예를 참조 - 메모리에 (응용 프로그램 시작, 또는 게으른 부하 수요에, 또는 무엇이든에) - 내가 사용하고 정말 http://www.filehelpers.com/에서 FileHelpers libs와 같은 나중에 쿼리에 대한 인덱스를 만들 수도 있습니다. 하나의 열에 대해서만 신경 쓰면, 예를 들어 HashSet으로 모두 밀어 넣으면 Contains를 나중에 빠르게 할 수 있습니다.

+0

+1이지만 Excel 지원의 경우 Excel이 설치되어 있어야하며 Excel 자동화 (COM Interop)를 사용하여 Excel을 읽어야합니다. @ 존 손더스 (John Saunders)가 지적했듯이, 프로덕션 서버 환경에서는 공식적으로 지원되는 구성이 아닙니다. – technomalogical

1

Excel 자동화 API를 사용하는 경우 ASP.NET에서 Excel 파일에 액세스 할 수 없습니다. 이들은 데스크톱 응용 프로그램에서 사용하기 위해 작성되었으며 ASP.NET과 같은 서버 응용 프로그램에서는 사용하지 않습니다. 이러한 프로그램은 작동하지 않으며 지원되지 않으며 Microsoft와의 사용권 계약을 위반할 수 있습니다.

ASP.NET에서 안전하게 Excel 파일에 액세스 할 수있는 타사 라이브러리가 있습니다. 자동화 API는 사용하지 않습니다.

+0

ADO.NET을 사용한 OLEDB 쿼리를 잊지 마십시오. 아마 그다지 빠르지는 않지만 선택 사항입니다. – technomalogical

+0

@tech : notice "Excel 자동화 API 사용" –

+0

OLEDB에는 Microsoft MDAC에 포함 된 Jet 4.0 만 필요합니다. Excel을 설치할 필요가 없으며 Excel 자동화를 사용하지 않습니다. MDAC는 Windows 2000 이상에 기본적으로 설치되며 Windows의 서버 버전 (2003, 2008)에도 설치되어 있다고 가정합니다. – technomalogical

0

EPPLus를 사용하여 파일을 DataTable로 읽습니다. 약간의 시간이 걸릴 수 있습니다. 파일이 조금 크면 ...

관련 문제