/// <summary> /// Constructor accepting cv file path and configuration for file read /// </summary> /// <param name="csvFilePath">Full CSV file path</param> /// <param name="csvConfiguration">Configuration to be used for reading CSV file</param> public CSVFileReader(string csvFilePath, CSVConfiguration csvConfiguration) { var streamReader = new StreamReader(csvFilePath); if (streamReader != null) { this.BaseStream = streamReader.BaseStream; } if (csvConfiguration == null) { csvConfiguration = DefaultCsvConfiguration; } this.fieldSeparator = csvConfiguration.FieldSeparator; this.textQualifier = csvConfiguration.TextQualifier; this.textReader = new StreamReader(this.BaseStream);// new FileStream(csvSource.TextReader, FileMode.Open); this.ReadHeader(csvConfiguration.Header); this.NormalizeColumns(); }
/// <summary> /// Converts IEnumerable of object of type T into CSV record /// </summary> /// <typeparam name="T">Type to be used to covert object into CSV record</typeparam> /// <param name="source">Scource list of object of type T</param> /// <param name="csvDestination">Destination where CSV file would be written</param> /// <param name="csvConfiguration">Configuration to be used while writing CSV file</param> public static async Task ToCsv <T>(this IEnumerable <T> source, CSVDestination csvDestination, CSVConfiguration csvConfiguration) where T : BaseEntity { using (var csvFile = new CSVFile <T>(csvDestination, csvConfiguration)) { foreach (var record in source) { await csvFile.Append(record); } } }
/// <summary> /// Parameter less constructor /// </summary> static CSVFile() { DefaultCsvConfiguration = new CSVConfiguration(); FastIndexOfAny = true; }