示例#1
0
        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);
        }
示例#2
0
        public DataSheetCollection Clone()
        {
            var clone = new DataSheetCollection();

            _dataSheets.Each(sheet => clone.AddSheet(sheet));
            return(clone);
        }
示例#3
0
        /// <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());
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
 public void CopySheetsFrom(DataSheetCollection dataSheetsToCopy)
 {
     Clear();
     _dataSheets.AddRange(dataSheetsToCopy._dataSheets);
 }