急求将excel数据导入新建dBase数据库的快捷方法。
本人目前采用的方式是OleDb连接excel数据库,将数据导入DataSet,然后新建dBase数据库,将DataSet表内的数据逐行写于数据库,虽然可以实现,但是速度很慢,4000行记录要将近3min,有没有很快捷的方式或者块操作?

解决方案 »

  1.   

    用SQLBLUKCOPY函数 ,这个效率很高,是批量复制操作。public static void ImportDBFromExcelSource(DataTable dt,SqlConnection conn,SqlTransaction transaction)
            {
                SqlBulkCopy blkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, transaction);
                blkCopy.BatchSize = dt.Rows.Count;
                blkCopy.DestinationTableName = "TableName";
                blkCopy.ColumnMappings.Add("a", "a");
                blkCopy.ColumnMappings.Add("b", "b");
                blkCopy.ColumnMappings.Add("v", "v");
                blkCopy.ColumnMappings.Add("d", "d");
                blkCopy.ColumnMappings.Add("e", "e");
                blkCopy.ColumnMappings.Add("f", "f");
                //blkCopy.ColumnMappings.Add("g", "g");            try
                {
                    blkCopy.WriteToServer(dt);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally 
                {
                    blkCopy.Close();
                }
                
            }
      

  2.   

    用SQLBLUKCOPY函数 ,这个效率很高,是批量复制操作。public static void ImportDBFromExcelSource(DataTable dt,SqlConnection conn,SqlTransaction transaction)
            {
                SqlBulkCopy blkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, transaction);
                blkCopy.BatchSize = dt.Rows.Count;
                blkCopy.DestinationTableName = "TableName";
                blkCopy.ColumnMappings.Add("a", "a");
                blkCopy.ColumnMappings.Add("b", "b");
                blkCopy.ColumnMappings.Add("v", "v");
                blkCopy.ColumnMappings.Add("d", "d");
                blkCopy.ColumnMappings.Add("e", "e");
                blkCopy.ColumnMappings.Add("f", "f");
                //blkCopy.ColumnMappings.Add("g", "g");            try
                {
                    blkCopy.WriteToServer(dt);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally 
                {
                    blkCopy.Close();
                }
                
            }
      

  3.   

    SqlConnection 可以连dBase吗?怎么连?
      

  4.   

    #2楼 SqlConnection 可以连dBase吗?怎么连?
      

  5.   

    这是MSDN里面对SqlConnection对象的描述:SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话。对于客户端/服务器数据库系统,它等效于到服务器的网络连接。SqlConnection 与 SqlDataAdapter 和 SqlCommand 一起使用,可以在连接 Microsoft SQL Server 数据库时提高性能。对于所有第三方 SQL 服务器产品以及其他支持 OLE DB 的数据源,请使用 OleDbConnection。
      

  6.   

    这是MSDN里面对SqlConnection对象的描述:SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话。对于客户端/服务器数据库系统,它等效于到服务器的网络连接。SqlConnection 与 SqlDataAdapter 和 SqlCommand 一起使用,可以在连接 Microsoft SQL Server 数据库时提高性能。对于所有第三方 SQL 服务器产品以及其他支持 OLE DB 的数据源,请使用 OleDbConnection。
      

  7.   

    再给你段连接的代码:兼容2003与2007的public static DataTable CreateExcelDataSource(string url)
            {
                DataTable dt = null;
                string connetionStr = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + url + ";" + "Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';";
                string strSql = "select * from [Sheet1$]";
                OleDbConnection oleConn = new OleDbConnection(connetionStr);
                OleDbDataAdapter oleAdapter = new OleDbDataAdapter(strSql, connetionStr);            
                try
                {
                    dt = new DataTable(); 
                    oleAdapter.Fill(dt);               
                    //dt.AcceptChanges();                return dt;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    oleAdapter.Dispose();
                    oleConn.Close();
                    oleConn.Dispose();
                }
            }
      

  8.   

    再给你段连接的代码:兼容2003与2007的public static DataTable CreateExcelDataSource(string url)
            {
                DataTable dt = null;
                string connetionStr = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + url + ";" + "Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';";
                string strSql = "select * from [Sheet1$]";
                OleDbConnection oleConn = new OleDbConnection(connetionStr);
                OleDbDataAdapter oleAdapter = new OleDbDataAdapter(strSql, connetionStr);            
                try
                {
                    dt = new DataTable(); 
                    oleAdapter.Fill(dt);               
                    //dt.AcceptChanges();                return dt;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    oleAdapter.Dispose();
                    oleConn.Close();
                    oleConn.Dispose();
                }
            }
      

  9.   

    再给你段连接的代码:兼容2003与2007的public static DataTable CreateExcelDataSource(string url)
            {
                DataTable dt = null;
                string connetionStr = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + url + ";" + "Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';";
                string strSql = "select * from [Sheet1$]";
                OleDbConnection oleConn = new OleDbConnection(connetionStr);
                OleDbDataAdapter oleAdapter = new OleDbDataAdapter(strSql, connetionStr);            
                try
                {
                    dt = new DataTable(); 
                    oleAdapter.Fill(dt);               
                    //dt.AcceptChanges();                return dt;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    oleAdapter.Dispose();
                    oleConn.Close();
                    oleConn.Dispose();
                }
            }
      

  10.   

    这段代码不需要了,我就是这么用的,把excel里面的数据连接上,我想问的是怎么新建一个dbf数据库文件,然后把excel里面的数据快速的导进去。
      

  11.   

    这段代码我不需要了,我就是这么用的,把excel数据源连接起来。
    我想问的是怎么新建一个dBaseIV的dbf数据库,把excel里面的数据全部导进dbf文件。
      

  12.   

    这段代码我不需要了,我就是这么用的,把excel数据源连接起来。
    我想问的是怎么新建一个dBaseIV的dbf数据库,把excel里面的数据全部导进dbf文件。