public ParseErrors AddSheets(DataSheetCollection dataSheets, ColumnInfoCache columnInfos, string filter) { _importer.AddFromFile(_configuration.Format, dataSheets.Filter(filter), columnInfos, this); if (NanSettings == null || !double.TryParse(NanSettings.Indicator, out var indicator)) { indicator = double.NaN; } var errors = new ParseErrors(); foreach (var dataSet in DataSets.KeyValues) { if (NanSettings != null && NanSettings.Action == NanSettings.ActionType.Throw) { if (dataSet.Value.NanValuesExist(indicator)) { errors.Add(dataSet.Value, new NaNParseErrorDescription()); } } else { dataSet.Value.ClearNan(indicator); var emptyDataSets = dataSet.Value.Data.Where(parsedDataSet => parsedDataSet.Data.All(column => column.Value.Count == 0)).ToList(); if (emptyDataSets.Count == 0) { continue; } var emptyDataSetsNames = emptyDataSets.Select(d => string.Join(".", d.Description.Where(metaData => metaData.Value != null).Select(metaData => metaData.Value))); errors.Add(dataSet.Value, new EmptyDataSetsParseErrorDescription(emptyDataSetsNames)); } } return(errors); }
public DataSheetCollection Clone() { var clone = new DataSheetCollection(); _dataSheets.Each(sheet => clone.AddSheet(sheet)); return(clone); }
/// <summary> /// Adds the sheets of collection <paramref name="sheetsToBeAdded" /> to the current collection /// Returns the names of the sheets added. /// </summary> public IReadOnlyList <string> AddNotExistingSheets(DataSheetCollection sheetsToBeAdded) { var notExistingSheets = sheetsToBeAdded.Where(x => !_dataSheets.Contains(x)).ToList(); _dataSheets.AddRange(notExistingSheets); return(notExistingSheets.Select(x => x.SheetName).ToList()); }
public DataSheetCollection GetDataSheetsByName(IReadOnlyList <string> sheetNames) { var sheets = new DataSheetCollection(); foreach (var sheetName in sheetNames) { if (_dataSheets.Contains(sheetName)) { sheets.AddSheet(_dataSheets[sheetName]); } } return(sheets); }
public DataSheetCollection Filter(string filter) { var filteredDataSheets = new DataSheetCollection(); foreach (var key in _dataSheets.Keys) { var dt = _dataSheets[key].ToDataTable(); var dv = new DataView(dt); dv.RowFilter = filter; var ds = new DataSheet(_dataSheets[key]); foreach (DataRowView drv in dv) { ds.AddRow(drv.Row.ItemArray.Select(c => c.ToString())); } filteredDataSheets.AddSheet(ds); } return(filteredDataSheets); }
public void CopySheetsFrom(DataSheetCollection dataSheetsToCopy) { Clear(); _dataSheets.AddRange(dataSheetsToCopy._dataSheets); }