问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何高效的将excel导入sqlserver?

发布网友 发布时间:2022-05-04 13:03

我来回答

1个回答

热心网友 时间:2022-05-04 14:33

using System; using System.Data; using System.Windows.Forms; using System.Data.OleDb; namespace WindowsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //测试,将excel中的sheet1导入到sqlserver中 string connString = "server=localhost;uid=sa;pwd=sqlgis;database=master"; System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog(); if (fd.ShowDialog() == DialogResult.OK) { TransferData(fd.FileName, "sheet1", connString); } } public void TransferData(string excelFile, string sheetName, string connectionString) { DataSet ds = new DataSet(); try { //获取全部数据 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); string strExcel = ""; OleDbDataAdapter myCommand = null; strExcel = string.Format("select * from [{0}$]", sheetName); myCommand = new OleDbDataAdapter(strExcel, strConn); myCommand.Fill(ds, sheetName); //如果目标表不存在则创建 string strSql = string.Format("if object_id('{0}') is null create table {0}(", sheetName); foreach (System.Data.DataColumn c in ds.Tables[0].Columns) { strSql += string.Format("[{0}] varchar(255),", c.ColumnName); } strSql = strSql.Trim(',') + ")"; using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection(connectionString)) { sqlconn.Open(); System.Data.SqlClient.SqlCommand command = sqlconn.CreateCommand(); command.CommandText = strSql; command.ExecuteNonQuery(); sqlconn.Close(); } //用bcp导入数据 using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString)) { bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied); bcp.BatchSize = 100;//每次传输的行数 bcp.NotifyAfter = 100;//进度提示的行数 bcp.DestinationTableName = sheetName;//目标表 bcp.WriteToServer(ds.Tables[0]); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } } //进度显示 void bcp_SqlRowsCopied(object sender, System.Data.SqlClient.SqlRowsCopiedEventArgs e) { this.Text = e.RowsCopied.ToString(); this.Update(); } } } 上面的TransferData基本可以直接使用,如果要考虑周全的话,可以用oledb来获取excel的表结构,并且加入ColumnMappings来设置对照字段,这样效果就完全可以做到和sqlserver的dts相同的效果了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 淘宝卖家电脑端没有图片 车载蓝牙mp3怎么和手机配对 15的奔驰以后能改carplay苹果系统吗 如何升级2012奔驰s系列commond系统的蓝牙 奔驰电脑系统升级后会出现什么问题 有谁懂电脑的,我的电脑上IE网站登陆上淘宝搜索不能显示图片,怎么回事求解? 奔驰cla260导航系统怎么更新 长宽高的英文缩写 全国范围内哪里什么店可以升级奔驰车上的comand系统,c63 amg老款的系统想升级成新的。 全国范围内哪里什么店可以升级奔驰车上的comand系统,c63 amg老款的系统想升级成新的。 奔驰2010款c300系统可以升级吗 足球场上各个位置的名称、职责,英文缩写 梅赛德斯奔驰系统不更新有什么影响吗 魔方最常用的有哪些英文缩写 _百度问一问 松宜节能煮面桶打不着火是什么原因 煮面炉打不着火,自动停机 请问煮面炉有时点不着火,有时能点着,但然一会就灭了,火头还小,请问怎么回事? 梦见岳父给我一家人买了新房? 梦见家人给我五十块的两万还说买了房子 CDR打印方向不对.如何调整? coreldraw+x4打印设置是横向为啥出来是竖向? 如何在视频里面+放两种声音? coreldraw X4打印图纸怎么样设成横向的? cdr怎么设置打印机纸张方向(在线)50分 CDR文件打印怎么调横竖 请问我在CDR里打开把A4的纸点的是横向。设计好后。可以点击打印预览里却是纵向显示出来。打印是横是纵的? coreldraw中的打印A4怎么搞成横向的,每次打印预览都是纵向的。(我是a4的打印机) coreldraw中在打印预览中如何改页面方向 CorelDRAW里出现 打印机的纸张方向与一个或多个文档页面 怎么调 cdr打印什么意思 coreldraw打印问题 为什么新华字典里查不到“焢”这个字? 新华字典增添新词,你如果碰到生僻字还会查字典吗? 请问三个夏落一起念什么?有什么网站查询生僻字? 孮是生僻字吗为什么字典查不到? 生僻字查找 ‘囧’字查新华字典找不到,不知读法及其意,求奌解。 哪种字典能查疑难杂字,生僻字?现代汉语词典、新华字典、学生古汉语字典都查不到的那种? 盘点护士系列电影,【免费高清】在线观看百度网盘资源