public ImportedData ProcessFile(Stream fileStream)
 {
     using (var streamReader = new StreamReader(fileStream, _encoding))
     {
         var headerLine = streamReader.ReadLine();
         var importedData = new ImportedData();
         if (headerLine == null) return importedData;
         var headers = headerLine.Split(_seperator).Select(s => s.Trim()).ToList();
         importedData.Headers.AddRange(headers);
         while (!streamReader.EndOfStream)
         {
             var rowLine = streamReader.ReadLine();
             if (rowLine == null) continue;
             var rowValues = rowLine.Split(_seperator).Select(s => s.Trim()).ToList();
             var row = new Dictionary<string, string>();
             for (var i = 0; i < headers.Count; i++)
             {
                 if (i < rowValues.Count)
                     row.Add(headers[i], rowValues[i]);
             }
             importedData.RowData.Add(row);
         }
         return importedData;
     }
 }
        public ImportedData ProcessFile(Stream fileStream)
        {
            using (var excelPackage = new ExcelPackage())
            {
                excelPackage.Load(fileStream);

                var importedData = new ImportedData();
                var currentSheet = excelPackage.Workbook.Worksheets;
                var workSheet    = currentSheet.First();
                var noOfCol      = workSheet.Dimension.End.Column;
                var noOfRow      = workSheet.Dimension.End.Row;
                var obj          = (object[, ])workSheet.Cells.Value;

                for (var firstRow = 0; firstRow < noOfCol; firstRow++)   // header row for columns name
                {
                    try
                    {
                        var columnName = Convert.ToString(obj[0, firstRow]);
                        if (string.IsNullOrEmpty(columnName) == false)
                        {
                            importedData.Headers.Add(Convert.ToString(obj[0, firstRow]).Trim().ToLower());
                        }
                    }
                    catch (IndexOutOfRangeException ex)
                    {
                        if (!string.IsNullOrEmpty(ex.Message))
                        {
                            continue;
                        }
                    }
                }

                if (importedData.Headers.Count != noOfCol)
                {
                    noOfCol = importedData.Headers.Count;
                }

                for (var row = 1; row < noOfRow; row++)  // start from second means data row
                {
                    var data = new Dictionary <string, string>();
                    for (var col = 0; col < noOfCol; col++)
                    {
                        try
                        {
                            data.Add(importedData.Headers[col], Convert.ToString(obj[row, col]));
                        }
                        catch (Exception ex)
                        {
                            if (!string.IsNullOrEmpty(ex.Message))
                            {
                                throw;
                            }
                        }
                    }
                    importedData.RowData.Add(data);
                }
                return(importedData);
            }
        }