今天研究了一下使用oledb读取txt文档,挺人说这样的速度比较快,以下是实现的代码:

        #region <DataconnectionTxt> Text 文檔操作 OLE DB
        /// <summary>
        /// 操作TXT文件 OLE DB
        /// </summary>
        /// <param name="txtfolder">txt文件所在的文件夾的路徑</param>
        public OleDbConnection DataconnectionTxt(string txtfolder)
        {
            _dBconnstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtfolder + ";Extended Properties='text;HDR=no;FMT=Delimited';";
            var txtconnection = new OleDbConnection(_dBconnstring);
            try
            {
                txtconnection.Open();
                return txtconnection;
            }
            catch (Exception)
            {
                throw new Exception("無法連接給出的目錄,請重新確定路徑的正確性!");
            }
        }
        #endregion

        #region  <SqlDatasetTxt> 通過SQL查詢文件夾中的TXT文本文件
        /// <summary>
        /// OLEDB讀取txt文檔
        /// </summary>
        /// <param name="oleDbConnection">數據連接</param>
        /// <param name="sqlstr">數據連接字符串</param>
        /// <returns>返回dataset數據集</returns>
        /// 文檔的格式何種要,列之間必須用“,”隔開,程式讀取時會按照“,”進行分列
        public DataSet SqlDatasetTxt(OleDbConnection oleDbConnection,string sqlstr)
        {
            var tempdateset=new DataSet();
            try
            {
            var oleDbCommand=new OleDbCommand(sqlstr,oleDbConnection);
            var oleDbDataAdapter=new OleDbDataAdapter(oleDbCommand);
            oleDbDataAdapter.Fill(tempdateset);
                return tempdateset;
            }
            catch (Exception exception)
            {
                if (oleDbConnection.State!=ConnectionState.Closed)
                {
                    oleDbConnection.Close();
                }
                throw new Exception(exception.Message);
            }
            finally
            {
                oleDbConnection.Close();
            }

        }
        #endregion

 

执行代码:

var aa=new DataFileGet();

dataGridView1.DataSource= aa.SqlDatasetTxt(aa.DataconnectionTxt("d:/1"), "select * from 11.TXT").Tables[0];

1.SqlDatasetTxt  操作的方法

2.d:/1--------------------》D盘下的1文件夹

3.11.txt----------------》需要读取的文件

11.txt文件内容:

11,222
1
1
1
1
1
1
1
1
1

1
11

1,111,111,11,111

注意列之间是 用“,”隔开的否则只能读到一列数据,这就是为什么网上好多人说为什么读不全数据的原因。

代码测试framework3.5+xp通过。