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); }
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); }
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); }
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); }
/// <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)); } }
public PscCsv ComposeCsv(CsvHeader csvHeader, CsvLines CsvLines, CsvFooter csvFooter) { throw new NotImplementedException(); }
public IEnumerable <string> GetHeaders() => HasHeaders?CsvLines?.FirstOrDefault()?.Split(new char[] { ',' }) : null;
public int GetColumns() => ((CsvLines?.Any() == true) ? (CsvLines.First().Split(new char[] { ',' }).Count()) : 0);