Example #1
0
        /// <summary>
        /// 获取列名
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public static DataTable GetFieldName(string filePath)
        {
            using (DataTable dt = new DataTable())
            {
                dt.Columns.Add("FieldName");
                try
                {
                    Encoding encoding = EncodingType.GetFileEncodeType(filePath); //Encoding.ASCII;//

                    FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);

                    //StreamReader sr = new StreamReader(fs, Encoding.UTF8);
                    StreamReader sr = new StreamReader(fs, encoding);
                    //string fileContent = sr.ReadToEnd();
                    //encoding = sr.CurrentEncoding;
                    //记录每次读取的一行记录
                    string   strLine   = "";
                    string[] tableHead = null;
                    //标示列数
                    int columnCount = 0;
                    //标示是否是读取的第一行
                    bool IsFirst = true;
                    //逐行读取CSV中的数据
                    while ((strLine = sr.ReadLine()) != null)
                    {
                        //strLine = Common.ConvertStringUTF8(strLine, encoding);
                        //strLine = Common.ConvertStringUTF8(strLine);

                        if (IsFirst == true)
                        {
                            tableHead   = strLine.Split(',');
                            IsFirst     = false;
                            columnCount = tableHead.Length;
                            //创建列
                            for (int i = 0; i < columnCount; i++)
                            {
                                DataRow dr = dt.NewRow();
                                dr[0] = tableHead[i];
                                dt.Rows.Add(dr);
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                    sr.Dispose();
                    sr.Close();
                    fs.Dispose();
                    fs.Close();
                    return(dt);
                }
                catch (Exception e)
                {
                    Log.Error(e.Message);
                    return(dt);
                }
            }
        }
Example #2
0
        /// <summary>
        /// 将CSV文件的数据读取到DataTable中
        /// </summary>
        /// <param name="fileName">CSV文件路径</param>
        /// <returns>返回读取了CSV数据的DataTable</returns>
        public static DataTable OpenCSV(string filePath)
        {
            using (DataTable dt = new DataTable())
            {
                try
                {
                    Encoding encoding = EncodingType.GetFileEncodeType(filePath); //Encoding.ASCII;//

                    FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);

                    //StreamReader sr = new StreamReader(fs, Encoding.UTF8);
                    StreamReader sr = new StreamReader(fs, encoding);
                    //string fileContent = sr.ReadToEnd();
                    //encoding = sr.CurrentEncoding;
                    //记录每次读取的一行记录
                    string strLine = "";
                    //记录每行记录中的各字段内容
                    string[] aryLine   = null;
                    string[] tableHead = null;
                    //标示列数
                    int columnCount = 0;
                    //标示是否是读取的第一行
                    bool IsFirst = true;
                    //逐行读取CSV中的数据
                    while ((strLine = sr.ReadLine()) != null)
                    {
                        //strLine = Common.ConvertStringUTF8(strLine, encoding);
                        //strLine = Common.ConvertStringUTF8(strLine);

                        if (IsFirst == true)
                        {
                            tableHead   = strLine.Split(',');
                            IsFirst     = false;
                            columnCount = tableHead.Length;
                            //创建列
                            for (int i = 0; i < columnCount; i++)
                            {
                                DataColumn dc = new DataColumn(tableHead[i]);
                                dt.Columns.Add(dc);
                            }
                        }
                        else
                        {
                            aryLine = strLine.Split(',');
                            DataRow dr = dt.NewRow();
                            for (int j = 0; j < columnCount; j++)
                            {
                                dr[j] = aryLine[j];
                            }
                            dt.Rows.Add(dr);
                        }
                    }
                    if (aryLine != null && aryLine.Length > 0)
                    {
                        dt.DefaultView.Sort = tableHead[0] + " " + "asc";
                    }
                    sr.Dispose();
                    sr.Close();
                    fs.Dispose();
                    fs.Close();
                    return(dt);
                }
                catch (Exception e)
                {
                    Log.Error(e.Message);
                    return(dt);
                }
            }
        }