internal IEnumerable <T> MapExcelToEnumerable(string filePath, IExcelToEnumerableContext excelToEnumerableContext, IExcelToEnumerableOptions <T> options) { var workbook = new ExcelReader(filePath); var list = MapWorkbookToEnumerable(workbook, excelToEnumerableContext, options); return(list); }
private IEnumerable <T> MapWorkbookToEnumerable(ExcelReader workbook, IExcelToEnumerableContext excelToEnumerableContext, IExcelToEnumerableOptions <T> options) { _options = options; var worksheet = _options.WorksheetNumber.HasValue ? workbook[_options.WorksheetNumber.Value] : workbook[_options.WorksheetName]; while (!worksheet.CurrentRowNumber.HasValue || worksheet.CurrentRowNumber < _options.HeaderRow) { worksheet.ReadNext(); } _exceptionList = options.ExceptionHandlingBehaviour == ExceptionHandlingBehaviour.ThrowOnFirstException ? null : new List <Exception>(); var rowMapper = excelToEnumerableContext.GetRowMapper(_options) ?? excelToEnumerableContext.SetRowMapper(_options); var headerArray = ReadHeader(options, worksheet); var headerHandler = new HeaderHandler(rowMapper.Setters); var cellSettersDictionaryForRead = headerHandler.GetPropertySetterDictionary(headerArray, options); var list = MainLoop(worksheet, rowMapper, options, cellSettersDictionaryForRead); if (_options.UniqueProperties != null) { list = CheckUniqueFields(rowMapper, list); } HandleAggregatedExceptions(); return(list); }