public List <T> GetSettlementItemsFromSheet <T>(string sheetName, SettlementHistoryWorkbook workbook) where T : SettlementItem, new() { List <T> items = new List <T>(); SettlementHistoryWorkbook.HelperSheet sheet = workbook[sheetName]; if (sheet != null) { Dictionary <string, PropertyInfo> columnProperties = GetColumnProperties <T>(sheet); int rowIndex = 0; foreach (SettlementHistoryWorkbook.HelperRow row in sheet.GetRows().Skip(2)) { if (IsLastRow <T>(row)) { break; } T item = new T(); item.SettlementId = _settlementId; item.id = $"{_settlementId}-{rowIndex++}"; foreach (SettlementHistoryWorkbook.HelperCell cell in row.GetCells()) { if (columnProperties.ContainsKey(cell.Name)) { PropertyInfo property = columnProperties[cell.Name]; SetValue(property, item, cell); } } items.Add(item); } } return(items); }
private Dictionary <string, PropertyInfo> GetColumnProperties <T>(SettlementHistoryWorkbook.HelperSheet sheet) { Dictionary <string, PropertyInfo> columnProperties = new Dictionary <string, PropertyInfo>(); // Get Header Row var headerRow = sheet.GetRows().Skip(1).First(); if (headerRow == null) { throw new ApplicationException($"Unable to get headers for {typeof(T)}"); } foreach (var cell in headerRow.GetCells()) { PropertyInfo property = GetPropertyByHeader <T>(cell.Value); if (property != null) { columnProperties.Add(cell.Name, property); } } return(columnProperties); }