示例#1
0
        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));
        }
示例#2
0
        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);
        }