博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#读取Excel的其中一种方式OleDb读取(100万条)--快速大量插入SQL中
阅读量:6648 次
发布时间:2019-06-25

本文共 3824 字,大约阅读时间需要 12 分钟。

主要运用表类型

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

///         /// 读取Excel中数据        ///         ///         ///         /// 
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表中

///         /// 导入msSql        ///         ///         /// 
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 ; }

  

转载于:https://www.cnblogs.com/tanhu/p/5984696.html

你可能感兴趣的文章
aix 文件大小相关查询
查看>>
cgroup
查看>>
hadoop
查看>>
keepalived
查看>>
《Linux菜鸟入门2》系统定时延时任务
查看>>
局域网共享故障的分析与排除
查看>>
使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)
查看>>
听说又被 JVM 内存区域方面的面试题给虐了?看看这篇文章吧!
查看>>
运维常用的系统命令
查看>>
C++--标准库 字符串类
查看>>
Java的新项目学成在线笔记-day1(七)
查看>>
160个CRACK_ME系列 第一弹
查看>>
什么是记录型数字压力表?被应用在哪些领域?
查看>>
零基础学习Python的4个方法
查看>>
Clouds
查看>>
好程序员带你认识HTML5中的WebSocket
查看>>
PDA是什么功能有哪些
查看>>
一文了解 SaCa DataViz 企业版和标准版的区别
查看>>
CentOS 5的KVM安装使用说明
查看>>
php warning: php startup: in unknown on line 0
查看>>