今天研究了一下使用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通过。