c#读取csv文件

读取csv文件网上有很多例子  但是都是相当长的一大串  并且  没 有 注 释

/// <summary>
        /// 添加数据到数据库
        /// </summary>
        public void insert(string aaa)
        {

            FileStream fs = new FileStream(path.SelectedPath + @"\pc" + aaa + "-设备.csv", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);//选择文件夹名字

            StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);//选择读取格式 

            StringBuilder sb = new StringBuilder(); //一个可变的字符序列
            string excle = "";
            while (!sr.EndOfStream)//一直读取到最后一条
            {
                sb.AppendLine(sr.ReadLine());

                excle = sb.ToString();//excle就是这个文件完整的一条字符串  用split 分割就好了
            }

            using (BoardDataContext linquser = new BoardDataContext())
            {
                //linquser.ExecuteCommand("TRUNCATE TABLE Board");//清空这个表  


                linquser.ExecuteCommand("DELETE FROM Board WHERE [BoardNumber]=" + aaa);//删除数据库中已有的数据






                //string a = File.ReadAllText(path.SelectedPath + @"\user.csv", Encoding.Default);//读数据

                string[] rows = new string[] { };//每一行
                string[] colum = new string[] { };//每个内容

                rows = excle.Split(Environment.NewLine.ToCharArray());//分割每一行  这是分割换行
                for (int i = 1; i < rows.Length; i++)//从一开始 去掉第一行  第一行是标题 
                {
                    if (rows[i] != "") //中间会有很多""空字符串 这里要去掉
                    {
                        colum = rows[i].Split(',');//然后在分割每一列

                        if (colum[0] != "")
                        {
                            Board u = new Board();
                            u.Data = colum[0];
                            u.Class = colum[1];
                            u.BoardNumber = colum[2];
                            u.PatternNumber = colum[3];
                            u.GoodNumber = colum[4];
                            u.BadNumber = colum[5];
                            u.Yield = colum[6];
                            u.StartTime = colum[7];
                            u.EndTime = colum[8];
                            u.TestTime = colum[9];
                            u.WaitTime = colum[10];
                            u.OverkapNumber = colum[11];
                            u.Overkapyield = colum[12];

                            linquser.Board.InsertOnSubmit(u);//添加数据到数据库就可以了
                            linquser.SubmitChanges();
                        }

                    }
                }






            }

        }

  

 

网上也有别的读取方式  但是会影响到csv文件打开运行时   程序不能执行这个方法  

在一个就是 linq 的用法 本来想先查出这个集合 然后在删除 

结果 偶然间从一个大神那 看到这种用法 

//linquser.ExecuteCommand("TRUNCATE TABLE Board");//清空这个表
linquser.ExecuteCommand("DELETE FROM Board WHERE [BoardNumber]=" + aaa);//删除数据库中已有的数据

括号里面可以直接加sql语句 那就很直接了

posted @ 2017-10-20 09:53  v587yy  阅读(1181)  评论(0编辑  收藏  举报