public static T ReadRecord <T>(string line, string[] titles, CsvConfig config) where T : new() { CsvRecord record = CsvContext.GetRecords(line, config.Delimiter).First(); List <PropertyInfo> properties = typeof(T).GetProperties().ToList(); return(ReadRecord <T>(record, properties)); }
public static DataTable GetDataTable(string path, string delimiter, Encoding encoding) { if (path.GetIsOleDb()) { } DataTable dt = new DataTable(); dt.Locale = CultureInfo.InvariantCulture; using (StreamReader sr = new StreamReader(path, encoding)) { string firstLine = sr.ReadLine().Trim(); string[] titles = CsvContext.GetRecords(firstLine, delimiter).First().ToArray(); for (int i = 0; i < titles.Length; i++) { dt.Columns.Add(titles[i]); } string fixedLine = string.Empty; while (!sr.EndOfStream) { string line = sr.ReadLine().Trim(); //skip empty lines if (line == string.Empty) { continue; } //read lines continuously int lastDoubleQuote = line.LastIndexOf('"'); { } string[] fields = CsvContext.GetRecords(line, delimiter).First().ToArray(); DataRow dr = dt.NewRow(); for (int i = 0; i < fields.Length && i < dt.Columns.Count; i++) { dr[i] = fields[i]; } dt.Rows.Add(dr); } } return(dt); }