首页 > 代码库 > 按格式读取csv文件内容

按格式读取csv文件内容

    string path = @"C:\Users\keen_\Downloads\upload\upload\Upload\20140701141934_export.csv";    ImportDataTable(path);        //2014-07-01        //get csv file to datatable        private static DataTable ImportDataTable(string filepath)        {            DataTable mydt = new DataTable("myTableName");            mydt.Columns.Add("Data ID", System.Type.GetType("System.String"));            mydt.Columns.Add("Field Name", System.Type.GetType("System.String"));            mydt.Columns.Add("New Value", System.Type.GetType("System.String"));            DataRow mydr;            using (System.IO.StreamReader mysr = new System.IO.StreamReader(filepath))            {                int data;                char current;                StringBuilder text = new StringBuilder();                IDictionary<int, List<string>> results = new Dictionary<int, List<string>>();                bool isInYinHao = false; ;                int lineId = 1;                int index = 0;                while (true)                {                    data = mysr.Read();                    if (data != -1)                    {                        current = (char)data;                        if (current == ")                        {                            if (isInYinHao)                            {                                isInYinHao = false;                            }                            else                            {                                if (index > 0)                                {                                    text.Append(current);                                }                                isInYinHao = true;                            }                        }                        else if (current == ,)                        {                            if (isInYinHao)                            {                                text.Append(current);                            }                            else                            {                                SaveResult(results, lineId, text);                                index = 0;                                continue;                            }                        }                        else if (current == \r)                        {                            if (isInYinHao)                            {                                text.Append(current);                            }                        }                        else if (current == \n)                        {                            if (isInYinHao)                            {                                text.Append(current);                            }                            else                            {                                SaveResult(results, lineId, text);                                index = 0;                                lineId++;                                continue;                            }                        }                        else if (current == \0)                        {                        }                        else                        {                            text.Append(current);                        }                        index++;                    }                    else                    {                        //Read to file end.                        SaveResult(results, lineId, text);                        break;                    }                }                foreach (int id in results.Keys)                {                    mydr = mydt.NewRow();                    for (int i = 0; i < results[id].Count; i++)                    {                        if (i > 2)                        {                            break;                        }                        mydr[i] = results[id][i];                    }                    mydt.Rows.Add(mydr);                }            }            return mydt;        }        private static void SaveResult(IDictionary<int, List<string>> results, int lineId, StringBuilder text)        {            if (!results.ContainsKey(lineId))            {                results.Add(lineId, new List<string>());            }            results[lineId].Add(text.ToString());            text.Remove(0, text.Length);        }