2016-11-30 5 views
1

У меня есть один документ Excel с несколькими рабочими листами.Как преобразовать часть файла Excel в уменьшенный DataSet в C#?

Я загрузил и преобразовал файл в DataTable объекта, используя код ниже:

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

Этот код преобразует весь файл, если 100000 строк доступны, но я хочу DataSet содержит подмножество этого данные (1000 строк и 1000 столбцов).

Возможно ли это, и как я могу это сделать?

+0

Я помню, что существует способ выбрать подмножество данных через SQL при импорте файла Excel в DataSet с использованием соединения ODBC. Это, вероятно, идеальное решение для вас. Я просмотрю свою кодовую базу, чтобы узнать, смогу ли я найти решение для вас. В то же время, можете ли вы предоставить пример файла Excel с несколькими рабочими листами и пример того, как вы хотите, чтобы полученный DataSet выглядел? –

ответ

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 конвертирует файл excel с более чем 5laksh строк ниже исключения. Исключено исключение типа «System.OutOfMemoryException». – RajaGanapathy

+0

@RajaGanapathy Можете ли вы предоставить образец того, как выглядит ваш файл Excel – Izzy