Ejemplo n.º 1
0
        public IEnumerable <string> GetContent(int columnIndex)
        {
            var startingLine = HasHeaders ? 1 : 0;

            var allCsvLines  = CsvLines.ToList();
            var contentLines = allCsvLines.GetRange(startingLine, allCsvLines.Count - startingLine);
            IEnumerable <string> columnContent = contentLines.Select(line => line.Split(new char[] { ',' }).ElementAtOrDefault(columnIndex));

            return(columnContent);
        }
Ejemplo n.º 2
0
        public void Save(IEnumerable <string> newLines, out string bakCSVPath)
        {
            bakCSVPath = GetBakCSVPath(CsvPath);
            File.Move(CsvPath, bakCSVPath);

            var content = new List <string>();

            content.AddRange(CsvLines.Take(3));
            content.AddRange(newLines);
            File.WriteAllLines(CsvPath, content, Encoding.Unicode);
        }
Ejemplo n.º 3
0
        public IEnumerable <ICsvLine> GetLines()
        {
            var aLines = new List <CsvLines>();

            if (this.Values.Any())
            {
                for (int i = 0; i < this.Values.First().Count(); i++)
                {
                    var line = new CsvLines();
                    foreach (var item in this.Keys)
                    {
                        line.Add(item, (this[item] as List <string>)[i]);
                    }

                    aLines.Add(line);
                }
            }

            return(aLines);
        }
Ejemplo n.º 4
0
        public DataTable ToDataTable()
        {
            var table = new DataTable();

            for (var index = 0; index < ColumnNames.Length; index++)
            {
                var columnName = ColumnNames[index];
                table.Columns.Add(index + "-" + columnName, typeof(string));
            }

            foreach (var line in CsvLines.Skip(3))
            {
                var columnValues = line.Split('\t');
                var row          = table.NewRow();
                for (var i = 0; i < columnValues.Length; i++)
                {
                    row[i] = columnValues[i];
                }
                table.Rows.Add(row);
            }
            return(table);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Reads a seekable stream of CSV data into a DataFrame.
        /// </summary>
        /// <param name="csvStream">stream of CSV data to be read in</param>
        /// <param name="separator">column separator</param>
        /// <param name="header">has a header or not</param>
        /// <param name="columnNames">column names (can be empty)</param>
        /// <param name="dataTypes">column types (can be empty)</param>
        /// <param name="numberOfRowsToRead">number of rows to read not including the header(if present)</param>
        /// <param name="guessRows">number of rows used to guess types</param>
        /// <param name="addIndexColumn">add one column with the row index</param>
        /// <param name="encoding">The character encoding. Defaults to UTF8 if not specified</param>
        /// <returns><see cref="DataFrame"/></returns>
        public static DataFrame LoadCsv(Stream csvStream,
                                        char separator          = ',', bool header       = true,
                                        string[] columnNames    = null, Type[] dataTypes = null,
                                        long numberOfRowsToRead = -1, int guessRows      = 10, bool addIndexColumn = false,
                                        Encoding encoding       = null)
        {
            if (!csvStream.CanSeek)
            {
                throw new ArgumentException(Strings.NonSeekableStream, nameof(csvStream));
            }

            if (dataTypes == null && guessRows <= 0)
            {
                throw new ArgumentException(string.Format(Strings.ExpectedEitherGuessRowsOrDataTypes, nameof(guessRows), nameof(dataTypes)));
            }

            using (var streamReader = new StreamReader(csvStream, encoding ?? Encoding.UTF8, detectEncodingFromByteOrderMarks: true, DefaultStreamReaderBufferSize, leaveOpen: true))
            {
                CsvLineEnumerator    linesEnumerator = new CsvLineEnumerator(streamReader);
                IEnumerable <string> lines           = new CsvLines(linesEnumerator);
                return(ReadCsvLinesIntoDataFrame(lines, separator, header, columnNames, dataTypes, numberOfRowsToRead, guessRows, addIndexColumn));
            }
        }
Ejemplo n.º 6
0
 public PscCsv ComposeCsv(CsvHeader csvHeader, CsvLines CsvLines, CsvFooter csvFooter)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 7
0
 public IEnumerable <string> GetHeaders() => HasHeaders?CsvLines?.FirstOrDefault()?.Split(new char[] { ',' }) : null;
Ejemplo n.º 8
0
 public int GetColumns() => ((CsvLines?.Any() == true) ? (CsvLines.First().Split(new char[] { ',' }).Count()) : 0);