zoukankan      html  css  js  c++  java
  • C# CSV 文件转换成DataTable

    {
                DataTable dt = new DataTable();
                FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
                StreamReader sr = new StreamReader(fs, Encoding.Default);
                //记录每次读取的一行记录
                string strLine = "";
                //记录每行记录中的各字段内容
                string[] aryLine;
                //标示列数
                int columnCount = 0;
                //标示是否是读取的第一行
                bool IsFirst = true;
                bool IsTotalResult = false;
                //逐行读取CSV中的数据
                while ((strLine = sr.ReadLine()) != null)
                {
                    if (strLine == "" || strLine.Replace(",","").IsEmpty())
                    {
                        continue;
                    }
                    aryLine = strLine.Replace(" ","").Split(',');
                    if (strLine.Contains("Header_Data"))
                    {
                        IsTotalResult = true;
                        continue;
                    }
                    if (IsTotalResult)
                    {
                        if (strLine.Contains("Component_Data"))
                        {
                            string totalReuslt = dt.Rows[0]["Result"].ToString();
                            strSN = dt.Rows[0]["BarCode"].ToString();
                            if (totalReuslt.Contains('F'))
                            {
                                IsTotalResult = false;
                                dt = new DataTable();
                                IsFirst = true;
                                continue;
                            }
                            else
                            {
                                sr.Close();
                                fs.Close();
                                return true;
                            }
                        }
                        if (IsFirst == true)
                        {
                            IsFirst = false;
                            columnCount = aryLine.Length;
                            //创建列
                            for (int i = 0; i < columnCount; i++)
                            {
                                DataColumn dc = new DataColumn(aryLine[i].Trim());
                                dt.Columns.Add(dc);
                            }
                        }
                        else
                        {
                            DataRow dr = dt.NewRow();
                            for (int j = 0; j < columnCount; j++)
                            {
                                dr[j] = aryLine[j].Trim();
                            }
                            dt.Rows.Add(dr);
                        }
                        continue;
                    }
                    if (IsFirst == true)
                    {
                        IsFirst = false;
                        columnCount = aryLine.Length;
                        //创建列
                        for (int i = 0; i < columnCount; i++)
                        {
                            DataColumn dc = new DataColumn(aryLine[i].Trim());
                            dt.Columns.Add(dc);
                        }
                    }
                    else
                    {
                        DataRow dr = dt.NewRow();
                        for (int j = 0; j < columnCount; j++)
                        {
                            dr[j] = aryLine[j].Trim();
                        }
                        dt.Rows.Add(dr);
                    }
                }
                sr.Close();
                fs.Close();
    }
    
  • 相关阅读:
    【开发者笔记】C#连接mysql问题记录
    【开发者笔记】揣摩Spring-ioc初探,ioc是不是单例?
    【开发者笔记】c# 调用java代码
    【数据库乱码】记录一下数据库乱码问题
    字符函数
    单行函数和多行函数
    rownum和rowid伪列
    排序子句
    单引号的转义
    逻辑运算符
  • 原文地址:https://www.cnblogs.com/ILoveMyJob/p/10137292.html
Copyright © 2011-2022 走看看