public IEnumerable <ImportCommission> Read(Stream stream) { var groupLoader = new CommissionGroupLoader(); var sheetGroups = groupLoader.Load(_config, stream); var exchangeRateLoader = new ExchangeRateLoader(); var sheetExchangeRates = exchangeRateLoader.Load(_config, stream); var reader = ExcelReaderFactory.CreateReader(stream); var sheetNumber = 0; do { //Increment the sheet number sheetNumber++; var sheet = _config.Sheets.FirstOrDefault(s => s.Position == sheetNumber); if (sheet != null) { var sheetGroup = sheetGroups.FirstOrDefault(s => s.SheetNumber == sheetNumber); var sheetExchangeRate = sheetExchangeRates.FirstOrDefault(s => s.SheetNumber == sheetNumber); foreach (var commission in Read(reader, sheet, sheetGroup, sheetExchangeRate)) { yield return(commission); } } } while (reader.NextResult()); }
public IEnumerable <string> Read(Stream stream) { var groupLoader = new CommissionGroupLoader(); var sheetGroups = groupLoader.LoadForSheet(_sheet, stream); var commissionTypes = new List <string>(); using (var reader = ExcelReaderFactory.CreateReader(stream)) { var sheetNumber = 0; do { //Increment the sheet number sheetNumber++; if (_sheet.Position != sheetNumber) { continue; } var rowNumber = 0; var header = new HeaderLocator(_sheet.Config.HeaderIdentifier); while (reader.Read()) { rowNumber++; if (!header.Found) { header.Check(reader); continue; } var groupValues = new List <GroupValue>(); if (sheetGroups != null) { groupValues = sheetGroups.RowGroups.Single(r => r.RowNumber == rowNumber).GroupValues; } //Ignore row if any of the primary field values are empty var requiredFields = _sheet.Config.Fields.Where(f => Fields.PrimaryFieldNames().Any(p => p == f.Name)); var anyMissingRequiredFields = requiredFields.Any(field => { var fieldValue = Utils.GetValue(reader, ExcelUtils.ColumnToIndex(field.Column)); return(string.IsNullOrWhiteSpace(fieldValue)); }); if (anyMissingRequiredFields) { continue; } var value = CommissionImportReader.GetCommissionTypeValue(reader, _sheet.Config, groupValues); commissionTypes.Add(value); } } while (reader.NextResult()); } return(commissionTypes.Distinct().ToList()); }