Exemplo n.º 1
0
        /// <summary>
        /// Convert the current CSV to a csv object
        /// allows to set false the second parameter to indicate that there is no headers
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        private CsvContent ParseCsvData(string path)
        {
            var csv        = new CsvContent();
            var parser     = new ParseCsv(Configuration);
            var parsedFile = parser.FromFile(path);

            var enumerable = parsedFile as IList <string>[] ?? parsedFile.ToArray();

            if (Configuration.GetContainsHeaders())
            {
                var headrs  = enumerable.Take(1);
                var counter = 0;
                foreach (var headlist in headrs)
                {
                    foreach (var element in headlist)
                    {
                        var head = new CsvField();
                        head.Field    = element == null ? "" : element.ToString();
                        head.Position = counter;
                        csv.Headers.Add(head);
                        counter++;
                    }
                }
            }

            //skip the first row if contains headers
            var rows = enumerable.Skip((Configuration.GetContainsHeaders() ? 1 : 0));

            foreach (var row in rows)
            {
                var counter = 0;
                var rowline = new CsvRow();
                foreach (string element in row)
                {
                    rowline.FieldValue.Add(new CsvField {
                        Value = element == null ? "" : element.ToString(), Position = counter, Field = (csv.Headers.Any() ? csv.Headers.ElementAt(counter).Field:"")
                    });
                    counter++;
                }
                csv.Rows.Add(rowline);
            }
            return(csv);
        }