2016-11-30 1 views
1

여러 개의 워크 시트가있는 Excel 문서가 하나 있습니다.Excel 파일의 일부를 C#의 축소 된 DataSet으로 변환하려면 어떻게해야합니까?

내가 업로드 아래의 코드를 사용하여 DataTable 객체에 파일을 변환 한 : 100000 개 행이있는 경우

FileStream stream = File.Open(SourceUpload.Fullpath, FileMode.Open, FileAccess.Read); 
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //xlsx file format 
ds = excelReader.AsDataSet(); 

이 코드는 전체 파일을 변환,하지만 난이의 하위 집합을 포함하는 데이터 집합을 원하는 데이터 (1000 행 및 1000 열).

가능하며 어떻게 할 수 있습니까?

+0

ODBC 연결을 사용하여 Excel 파일을 DataSet으로 가져올 때 SQL을 통해 데이터의 하위 집합을 선택하는 방법이 있습니다. 이것은 아마도 당신에게 이상적인 해결책 일 것입니다. 내 코드베이스를 통해 내가 당신을위한 해결책을 찾을 수 있는지 살펴볼 것이다. 그 동안 여러 Excel 파일에 여러 개의 워크 시트를 제공하고 결과 데이터 세트를 어떻게 보이게 할 수 있습니까? –

답변

0

이것을 달성하려면 일부 Linq을 사용할 수 있습니다. 따라서 다음과 같은 메시지가 표시됩니다.

DataTable dt = //get data from excel or wherever 
IEnumerable<DataRow> data = dt.AsEnumerable().Select(a => a).Take(1000);//Select everything but only take the top 1000 records 
DataTable someTable = data.CopyToDataTable(); //copy the data 

//finally add it to our data set 
DataSet ds = new DataSet(); 
ds.Tables.Add(someTable); 

위의 스 니펫은 내 머리 상단에 있으며 테스트하지 않았습니다.

+0

위의 code.i는 5alaksh 개 이상의 행을 가진 excel 파일을 변환합니다. 예외가 발생합니다. 'System.OutOfMemoryException'유형의 예외가 발생했습니다. – RajaGanapathy

+0

@RajaGanapathy Excel 파일의 모양 샘플을 제공 할 수 있습니까? – Izzy

관련 문제