• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#读取Excel的其中一种方式OleDb读取(100万条)--快速大量插入SQL中 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

主要运用表类型

 1 Create table BulkTestTable( 
 2 Id nvarchar(32), 
 3 UserName nvarchar(32), 
 4 Pwd nvarchar(32)
 5 )
 6 Go
 7 CREATE TYPE BulkUdt AS TABLE 
 8 (Id nvarchar(32), 
 9 UserName nvarchar(32), 
10 Pwd nvarchar(32) )
View Code

C#端读取Excel

    /// <summary>
        /// 读取Excel中数据
        /// </summary>
        /// <param name="strExcelPath"></param>
        /// <param name="tableName"></param>
        /// <returns></returns>
        public DataTable GetExcelTableByOleDB(string strExcelPath, string tableName)
         {
             try
             {
                 DataTable dtExcel = new DataTable();
                 //数据表
                 DataSet ds = new DataSet();
                 //获取文件扩展名
                 string strExtension = System.IO.Path.GetExtension(strExcelPath);
                 string strFileName = System.IO.Path.GetFileName(strExcelPath);
                 //Excel的连接
                 OleDbConnection objConn = null;
                 switch (strExtension)
                 {
                     case ".xls":
                         objConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;\"");
                         break;
                     case ".xlsx":
                         objConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1;\"");
                         break;
                     default:
                         objConn = null;
                         break;
                 }
                 if (objConn == null)
                 {
                     return null;
                 }
                 objConn.Open();
                 //获取Excel中所有Sheet表的信息
                 //System.Data.DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
                 //获取Excel的第一个Sheet表名
                // string tableName1 = schemaTable.Rows[0][2].ToString().Trim();
                 string strSql = "select * from [" + tableName + "$]";
                 //获取Excel指定Sheet表中的信息
                 OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
                 OleDbDataAdapter myData = new OleDbDataAdapter(strSql, objConn);
                 myData.Fill(ds, tableName);//填充数据
                 objConn.Close();
                 //dtExcel即为excel文件中指定表中存储的信息
                 dtExcel = ds.Tables[tableName];
                 return dtExcel;
             }
             catch(Exception ex)
             {
                 MessageBox.Show(ex.Message);
                 return null;
             }
           
         }

  C#端插入到sql表中

 /// <summary>
        /// 导入msSql
        /// </summary>
        /// <param name="?"></param>
        /// <returns></returns>
        public int ExcelToMsSQL(string tablename,DataTable dt)
        {

          int count = 0;

            string Connstr = "Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Password=";
            SqlConnection sqlConn = new SqlConnection(Connstr); 
            const string TSqlStatement =
    "insert into BulkTestTable (Id,UserName,Pwd)" +
    " SELECT nc.Id, nc.UserName,nc.Pwd" +
    " FROM @NewBulkTestTvp AS nc";
            SqlCommand cmd = new SqlCommand(TSqlStatement, sqlConn);
            SqlParameter catParam = cmd.Parameters.AddWithValue("@NewBulkTestTvp", dt);
            catParam.SqlDbType = SqlDbType.Structured;
            //表值参数的名字叫BulkUdt,在上面的建立测试环境的SQL中有。  
            catParam.TypeName = "dbo.BulkUdt";
            try
            {
                sqlConn.Open();
                if (dt != null && dt.Rows.Count != 0)
                {
                  count =  cmd.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                sqlConn.Close();
            }  
 

          
            return count ;
        }

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Springc3p0连接池配置发布时间:2022-07-18
下一篇:
初学C#发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap