Excel导入SQLServer的三种方案
SQLServer读取及导入Excel数据

SQLServer读取及导⼊Excel数据⼀、引⾔使⽤SQL Server的OPENROWSET及OPENDATASOURCE函数,可以像查询数据表⼀样来读取Excel数据。
但是,要想让这两个函数能正常运⾏,可不是那么容易,假如没理解或没配置好的话,⼀路的报错会让你怀疑⼈⽣。
⼆、配置2.1、组件安装要想使⽤OPENROWSET及OPENDATASOURCE函数来读取Excel数据,⾸先要在⽬标的SQL Server主机上安装AccessDatabaseEngine组件。
1)换句话说:假如要操作的数据库是在本地的,那我在本地安装AccessDatabaseEngine即可;假如要操作的数据库安装在远程的服务器上,那么需在远程的服务器上安装AccessDatabaseEngine。
2)需要说明的是,读取Excel数据,只需安装AccessDatabaseEngine,并不⼀定要安装Office。
3)依⽬标的SQL Server主机的操作系统位数,来对应安装AccessDatabaseEngine版本。
本处Excel是2013版本(.xlsx),需安装Microsoft Access Database Engine 2010 Redistributable。
2.2、服务配置在⽬标的SQL Server主机上,Win+R调出运⾏,输⼊services.msc调出服务。
将SQL Server (MSSQLSERVER)、SQL Full-text Filter Daemon Launcher (MSSQLSERVER)两个服务的登录⾝份,改为本地系统账户。
2.3、参数配置在⽬标的SQL Server上打开查询分析器,执⾏以下语句:--1、开启导⼊功能(查看参数:exec sp_configure)exec sp_configure 'show advanced options',1reconfigureexec sp_configure 'Ad Hoc Distributed Queries',1reconfigure--2、允许在进程中使⽤ACE.OLEDB.12.0exec master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1--3、允许动态参数exec master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 12.3.1、开启导⼊功能对应的系统界⾯:2.3.2、允许在进程中使⽤ACE.OLEDB.12.0及允许动态参数对应的系统界⾯:三、测试3.1、测试语句在⽬标的SQL Server上打开查询分析器,执⾏以下语句:--1、使⽤查询分析器查询EXCEL--注意1:若连接的是本机的数据库,E:\EDI\年度返利费⽤表.xlsx指的是本机的⽂件路径。
如何把EXCEL数据导入到SQLSERVER数据库中

如何把EXCEL数据导入到SQLSERVER数据库中将Excel数据导入SQL Server数据库可以通过以下步骤实现:1. 打开Excel文件并选择要导入的数据:首先,打开Excel文件并选择要导入到SQL Server数据库的数据。
确保数据位于连续的单元格区域内,并且包含正确的列和行标题。
2. 导出Excel数据为CSV格式:将Excel数据导出为CSV(逗号分隔值)格式,这种格式是一种常见的数据交换格式,可以方便地被导入到SQL Server数据库中。
在Excel中,选择“文件”>“另存为”,然后选择CSV格式进行保存。
3. 创建目标表:在SQL Server数据库中创建一个目标表,用于存储要导入的数据。
可以使用SQL Server Management Studio或任何其他SQL编程工具来创建表。
确保表结构与将要导入的Excel数据的列和行标题相匹配。
4. 定义目标表的列:为目标表定义与Excel数据相匹配的列,保证目标表的列名与Excel数据的列名相同,并且数据类型也相匹配。
如果需要修改列的数据类型或长度,可以使用ALTER TABLE语句进行修改。
5. 使用SQL Server导入向导:使用SQL Server导入向导来导入CSV文件中的数据。
打开SQL Server Management Studio,右键单击目标数据库,选择“任务”>“导入数据”来打开导入向导。
6. 选择数据源:在导入向导的“选择数据源”步骤中,选择适当的数据源类型,这里选择“Flat File Source”,然后浏览找到之前保存的CSV文件。
7. 配置数据源:在导入向导的“配置Flat File Source”步骤中,配置CSV文件的设置。
确保分隔符设置为逗号(CSV的默认分隔符),并根据需要调整其他设置。
点击“下一步”继续。
8.选择目标数据库:在导入向导的“选择目标表或查看现有表”步骤中,选择目标数据库和表。
图解把EXCEL数据导入到SQLServer

实验环境:W I N X P,M S O f f i c e E x c e l2007,S q l S e r v e r2008准备数据:Excel文档:D:\test\重复出修率.xlsx方法一:第一步:打开SSMS:开始→所有程序→MicrosoftSqlServer2008→SqlServerManagementStudio第二步:连接数据库:在’对象资源管理器’中点击连接→数据库引擎登陆服务器P.S:如果没有看到’对象资源管理器’,点击左上角的视图→对象管理器第三步:登陆成功后,右击你要导入数据的数据库名,我这里数据库名是’TEST’右击TEST→任务→导入数据这时候会出现一个向导:点击下一步在弹出的窗口中,数据源选择:MicrosoftExcel;Excel文件路径就选择你本地电脑存放Excel文档的路径,我这里是D:\test\重复出修率.xlsxExcel版本选择Excel2007可以根据你office的版本,选择其他如Excel2003等等;选中首行包含列名称框,最后点击下一步“首行包含列名称”是指Excel中的首行数据插入数据库后将作为新建表的列名.在弹出窗口中,目标可以采取默认的,服务器名称也是一样可以选择身份验证,最后选择你要插入数据到哪个数据库中;如我这里选的是’TEST’,选好后点击下一步如果就把Excel数据插入一个新表,就选择复制一个或多个表或视图的数据如果想把Excel数据插入到已存在的一张表中,则选择下面的编写查询以指定要传输的数据我这里是选择上面一个,然后点击下一步接着会弹出Excel表中的sheet表名字,如果你没有修改过sheet表名字,则可能显示的是’shee1$’,’shee2$’,’shee3$’等等.然后你选中你想要导入的哪张表的数据,我这里导入的是’aug$’选中后,右边的目标栏位中会出现内容,dbo是指数据库的架构名,aug$只是新建的表名,如果你想修改表明,双击就可以表明进入编辑状态就可以修改了;我这里修改的表名称为:aug_info修改后你也可以点击编辑映射你可以在这里修改目标,类型,是否可以为NULL,大小等建表数据;修改好后,点击确定,如果不想修改就点击取消返回上个窗口后,你也可以点击预览预览里面是Excel表中的一些数据;点击确定,然后点击下一步在弹出的页面中,就选中立即运行,至于保存SSIS包我也不是很清楚干嘛的;看样子好像是加密来着;然后点击下一步这个窗口就是一些提示信息,点击完成这个窗口是导入数据提示信息,看来我导入数据成功了;新建表名为aug_info,插入数据336行,所在数据库为TEST.点击关闭按钮就可以了;然后就是到SSMS中查看是否新生成了aug_info这张表.刷新TEST数据库或者重新登录SSMS在TEST数据库下,查看表,发现有个表名是aug_info进一步确认下,数据是否有误.点击对象资源管理器上面的新建查询,输入:use TESTselect COUNT as有多少行数据from aug_infoselectfrom aug_info前面显示‘已复制336行’,现在查询到表中有336行数据;看来这个表就是刚刚从Excel中导入的数据;OK,大功告成;很简单吧,点点鼠标就可以了P.S:前面到这里的时候,选择了上面的复制一个或多个表或视图的数据那下面的编写查询以指定要传输的数据怎么用呢下面我们来试一下,重新导入Excel,到这一步选择下面按钮,然后点击下一步发现这个是用来写SQL代码的;这个该怎么用呢我也没用过,百度了下;这个主要针对从数据库中导出条件筛选的数据.比如有一张test表,我只想导出表的其中一个字段或者几个字段的数据.就可以用这个.selectid,namefromtestwhere条件方法二:--首先打开SSMS,然后点击左上角的新建查询N,在右边弹出的窗口中输入一下代码:代码一:----------------------------------------------------------------------------------------useTEST---‘TEST’是数据库名字,你可以切换到你想要的数据库或直接输入数据库名字----根据系统需要使用这几段批处理命令打开相应功能EXECsp_configure'showadvancedoptions',1;GORECONFIGURE;GOEXECsp_configure'AdHocDistributedQueries',1;GORECONFIGURE;GO----以上为根据实际情况的可选命令----开始插入数据到TEST数据库的一个新表中selectintonewtable_namefromOpenDataSourceSource="c:\daoru.xlsx";Extendedproperties="Excel12.0;HDR=Yes"'... sheet1$goP.S:1:执行这段代码之前,你需要准备导入的数据;我用的是Excel2007,Excel文件的名字为“daoru”,放在C盘目录下;2:代码中的selectintonewtable_namefrom...这是把excel中的数据插入到TEST数据库中,并同时新建表名为newtable_name存放插入的数据.3:代码中的Office2007的数据库驱动为“”,如果是Office2003的话应改成“”,还有Office2007中Excel的“Extendedproperties”中为“Excel12.0”而Office2003为“Excel8.0”4:代码中'DataSource="c:\daoru.xlsx"就是要导入数据的文件存放路径.注意后缀:Excel2007的为.xlsx;Excel2003的为.xls5:代码中的...sheet1$为表名,格式为:XXX$或者XXX$,不需要中括号也行,而且表名不能以数字开头其实这是几乎所有编程语言的变量命名规则,切记没有修改过名字的话,Excel默认是shee1,shee2,shee3....6:当然,你也可以使导入的数据,不用新建表.而是直接导入到数据库已有的表中,只要稍微修改代码就可以了.代码二:---------------------------------------------------------------------------------------insertinto已存在的表名字段一,字段二selectA,BfromOpenDataSourceSource="c:\daoru.xlsx";Extendedproperties="Excel12.0;HDR=Yes"'... sheet1$go---------------------------------------------------------------------------------------代码二中,A,B表示的意思是Excel中的A列和B列,但是直接输入A,B是没有用的.这里还要提醒一点,导入数据的时候,系统默认Excel的第一行数据是字段名.所以,你可以把Excel的第一行的前两列数据改为A和B,这样就可以了如果Excel中的列数和数据库中的已存在的表的列数相等,也可以改成如下:代码三:---------------------------------------------------------------------------------------insertinto已存在的表名selectfromOpenDataSourceSource="c:\daoru.xlsx";Extendedproperties="Excel12.0;HDR=Yes"'... sheet1$go---------------------------------------------------------------------------------------。
如何将EXCEL中的数据直接导入 SQL SERVER 2000中的数据库

先读取EXCEL中的数据private void btnView_Click(object sender, System.EventArgs e){dgExcelData.DataSource = null;FileDialog dlgOpen = new OpenFileDialog();dlgOpen.Filter="Excel Files (*.xls)|*.xls";if(dlgOpen.ShowDialog() == DialogResult.OK){txtPath.Text=dlgOpen.FileName;string strCon = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = "+txtPath.Text.Trim()+";Extended Properties=Excel 8.0" ; OleDbConnection myConn = new OleDbConnection();try{this.Cursor = Cursors.WaitCursor;//创建一个数据Excel连接****************************************************************** myConn = new OleDbConnection ( strCon ) ;string strCom = " SELECT * FROM [Sheet1$]" ;myConn.Open ();//打开连接得到数据集合oDS.Clear();OleDbDataAdapter myCommand = new OleDbDataAdapter( strCom , myConn ) ;myCommand.Fill ( oDS , "[Sheet1$]" ) ;//关闭连接myConn.Close ( ) ;if (!oDS.Tables[0].Columns.Contains("Insert Result"))oDS.Tables[0].Columns.Add("Insert Result");dgExcelData.SetDataBinding(oDS,"[Sheet1$]");btnOk.Enabled = true;this.Cursor = Cursors.Arrow;inifrom();}catch(Exception err1){MessageBox.Show(err1.Message);myConn.Close();this.Cursor = Cursors.Arrow;}}//END}sql中右键所有任务导入数据选择EXCEL版本即可下面是导出真正Excel文件的方法:if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[p_exporttb] ') and OBJECTPROPERTY(id, N'IsProcedure ') = 1)drop procedure [dbo].[p_exporttb]GO/*--数据导出EXCEL导出表中的数据到Excel,包含字段名,文件为真正的Excel文件,如果文件不存在,将自动创建文件,如果表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建 2003.10(请保留此信息)--*//*--调用示例p_exporttb @tbname= '地区资料 ',@path= 'c:\ ',@fname= 'aa.xls ' --*/create proc p_exporttb@tbname sysname, --要导出的表名@path nvarchar(1000), --文件存放目录@fname nvarchar(250)= ' ' --文件名,默认为表名asdeclare @err int,@src nvarchar(255),@desc nvarchar(255),@out intdeclare @obj int,@constr nvarchar(1000),@sql varchar(8000),@f dlist varchar(8000)--参数检测if isnull(@fname, ' ')= ' ' set @fname=@tbname+ '.xls '--检查文件是否已经存在if right(@path,1) <> '\ ' set @path=@path+ '\ 'create table #tb(a bit,b bit,c bit)set @sql=@path+@fnameinsert into #tb exec master..xp_fileexist @sql--数据库创建语句set @sql=@path+@fnameif exists(select 1 from #tb where a=1)set @constr= 'DRIVER={Microsoft Excel Driver (*.xls)};DSN= ' ' ' ';READONLY=FALSE '+ ';CREATE_DB= " '+@sql+ ' ";DBQ= '+@sqlelseset @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES '+ ';DATABASE= '+@sql+ ' " '--连接数据库exec @err=sp_oacreate 'adodb.connection ',@obj outif @err <> 0 goto lberrexec @err=sp_oamethod @obj, 'open ',null,@constrif @err <> 0 goto lberr/*--如果覆盖已经存在的表,就加上下面的语句--创建之前先删除表/如果存在的话select @sql= 'drop table [ '+@tbname+ '] 'exec @err=sp_oamethod @obj, 'execute ',@out out,@sql--*/--创建表的SQLselect @sql= ' ',@fdlist= ' 'select @fdlist=@fdlist+ ',[ '++ '] ',@sql=@sql+ ',[ '++ '] '+casewhen like '%char 'then case when a.length> 255 then 'memo 'else 'text( '+cast(a.length as varchar)+ ') ' endwhen like '%int ' or = 'bit' then 'int 'when like '%datetime ' then 'datetime 'when like '%money ' then 'money 'when like '%text ' then 'memo 'else endFROM syscolumns a left join systypes b on a.xtype=b.x usertypewhere not in( 'image ', 'uniqueidentifier ', 'sql_variant ', 'varbinary ', 'binary ', 'timestamp ')and object_id(@tbname)=idselect @sql= 'create table [ '+@tbname+ ']( '+substring(@sql,2,8000)+ ') ',@fdlist=substring(@fdlist,2,8000)exec @err=sp_oamethod @obj, 'execute ',@out out,@sqlif @err <> 0 goto lberrexec @err=sp_oadestroy @obj--导入数据set @sql= 'openrowset( ' 'MICROSOFT.JET.OLEDB.4.0 ' ', ''Excel 8.0;HDR=YES;IMEX=1;DATABASE= '+@path+@fname+ ' ' ',[ '+@tbname+ '$]) 'exec( 'insert into '+@sql+ '( '+@fdlist+ ') select '+@fdlist+ ' from '+@tbname)returnlberr:exec sp_oageterrorinfo 0,@src out,@desc outlbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgoif exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[p_exporttb] ') and OBJECTPROPERTY(id, N'IsProcedure ') = 1)drop procedure [dbo].[p_exporttb]GO/*--数据导出EXCEL导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件如果文件不存在,将自动创建文件如果表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建 2003.10(请保留此信息)--*//*--调用示例p_exporttb @sqlstr= 'select * from 地区资料 ',@path= 'c:\ ',@fname= 'aa.xls ',@sheetname= '地区资料 '--*/create proc p_exporttb@sqlstr varchar(8000), --查询语句,如果查询语句中使用了order by ,请加上top 100 percent@path nvarchar(1000), --文件存放目录@fname nvarchar(250), --文件名@sheetname varchar(250)= ' ' --要创建的工作表名,默认为文件名asdeclare @err int,@src nvarchar(255),@desc nvarchar(255),@out intdeclare @obj int,@constr nvarchar(1000),@sql varchar(8000),@f dlist varchar(8000)--参数检测if isnull(@fname, ' ')= ' ' set @fname= 'temp.xls 'if isnull(@sheetname, ' ')= ' ' set @sheetname=replace(@fname, '. ', '# ')--检查文件是否已经存在if right(@path,1) <> '\ ' set @path=@path+ '\ 'create table #tb(a bit,b bit,c bit)set @sql=@path+@fnameinsert into #tb exec master..xp_fileexist @sql--数据库创建语句set @sql=@path+@fnameif exists(select 1 from #tb where a=1)set @constr= 'DRIVER={Microsoft Excel Driver (*.xls)};DSN= ' ' ' ';READONLY=FALSE '+ ';CREATE_DB= " '+@sql+ ' ";DBQ= '+@sqlelseset @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES '+ ';DATABASE= '+@sql+ ' " '--连接数据库exec @err=sp_oacreate 'adodb.connection ',@obj outif @err <> 0 goto lberrexec @err=sp_oamethod @obj, 'open ',null,@constrif @err <> 0 goto lberr--创建表的SQLdeclare @tbname sysnameset @tbname= '##tmp_ '+convert(varchar(38),newid())set @sql= 'select * into [ '+@tbname+ '] from( '+@sqlstr+ ') a 'exec(@sql)select @sql= ' ',@fdlist= ' 'select @fdlist=@fdlist+ ',[ '++ '] ',@sql=@sql+ ',[ '++ '] '+casewhen like '%char 'then case when a.length> 255 then 'memo 'else 'text( '+cast(a.length as varchar)+ ') ' endwhen like '%int ' or = 'bit' then 'int 'when like '%datetime ' then 'datetime 'when like '%money ' then 'money 'when like '%text ' then 'memo 'else endFROM tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertypewhere not in( 'image ', 'uniqueidentifier ', 'sql_variant ', 'varbinary ', 'binary ', 'timestamp ')and a.id=(select id from tempdb..sysobjects where name=@ tbname)if @@rowcount=0 returnselect @sql= 'create table [ '+@sheetname+ ']( '+substring(@sql,2,8000)+ ') ',@fdlist=substring(@fdlist,2,8000)exec @err=sp_oamethod @obj, 'execute ',@out out,@sqlif @err <> 0 goto lberrexec @err=sp_oadestroy @obj--导入数据set @sql= 'openrowset( ' 'MICROSOFT.JET.OLEDB.4.0 ' ', ''Excel 8.0;HDR=YES;DATABASE= '+@path+@fname+ ' ' ',[ '+@sheetname+ '$]) 'exec( 'insert into '+@sql+ '( '+@fdlist+ ') select '+@fdlist+ ' from [ '+@tbname+ '] ')set @sql= 'drop table [ '+@tbname+ '] 'exec(@sql)returnlberr:exec sp_oageterrorinfo 0,@src out,@desc outlbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgo。
向SQL server2005中导入excel数据

向SQL server 2005中导入excel数据:1、使用命令行,(数据库中缺少ssis):起因:项目中Excel 数据要导入到数据库中。
操作:1、开启OPENROWSET 和 OPENDATASOURCE 功能。
方式1:开始 -> 程序 -> Microsoft SQL Server 2005 -> 配置工具 -> 外围应用配置 -> [选择计算机 - 选择“使用中的服务器”所在的计算机 - 功能的外围应用配置器 - 选中复制框“启用 OPENROWSET 和 OPENDATASOURCE 支持” - 应用]本机中的使用方式:开始 -> 程序 -> Microsoft SQL Server 2005 -> 配置工具 -> SQL Server外围应用配置器 -> 功能的外围应用配置器 -> 选中复制框“启用 OPENROWSET 和OPENDATASOURCE 支持” -> 应用2、进入查询界面:(即打开数据库)方式1:开始 -> 程序 -> Microsoft SQL Server 2005 -> SQL Server Management Studio[连接对象资源管理器 - 连接“使用中的服务器” - 数据库 - 打开“使用的数据库” - 新建查询 - 执行“导入语句” ]3、步骤2中的导入语句如下:Insert TestXls --注:此为已存在的表,即为目的SELECT * --注:此应据实际需要写上具体字段FROM --注:此为Excel文件,即为来源OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=F:\WebsiteProject\StaffInfo.xls;Extended Properties=Excel 8.0')...[T$]/*已测试通过*/SELECT * into newtable --注:目的表,此为不存在的表,如果存在则会提示:消息2714,级别16,状态6,第1 行数据库中已存在名为'newtable的对象。
excel导入sqlserver数据库方法

excel导入sqlserver数据库方法怎样将Excel中的数据导入到SQL Server 2000数据库中,今天,店铺就教大家如何解决问题的方法!Excel导入sqlserver数据库方法如下:1、打开企业管理器,打开要导入数据的数据库,在表上按右键,所有任务-->导入数据,弹出DTS导入/导出向导,按下一步,2、选择数据源 Microsoft Excel 97-2000,文件名选择要导入的xls文件,按下一步,3、选择目的用于SQL Server 的Microsoft OLE DB提供程序,服务器选择本地(如果是本地数据库的话,如VVV),使用SQL Server 身份验证,用户名sa,密码为空,数据库选择要导入数据的数据库(如client),按下一步,4、选择用一条查询指定要传输的数据,按下一步,5、按查询生成器,在源表列表中,有要导入的xls文件的列,将各列加入到右边的选中的列列表中,这一步一定要注意,加入列的顺序一定要与数据库中字段定义的顺序相同,否则将会出错,按下一步,6、选择要对数据进行排列的顺序,在这一步中选择的列就是在查询语句中 order by 后面所跟的列,按下一步,7、如果要全部导入,则选择全部行,按下一步,8、则会看到根据前面的操作生成的查询语句,确认无误后,按下一步,9、会看到表/工作表/Excel命名区域列表,在目的列,选择要导入数据的那个表,按下一步,10、选择立即运行,按下一步,11、会看到整个操作的摘要,按完成即可。
软件开发网当然,在以上各个步骤中,有的步骤可以有多种选择,你可以根据自己的需要来选择相应的选项。
例如,对编程有兴趣的朋友可以在第10步的时候选择保存DTS包,保存成Visual Basic文件,可以看看里面的代码,提高自己的编程水平。
如:SQL语句导入EXcel数据初一招生insert into czzs2011 select kh,xm,cj1,cj2,zf,bz fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=g:\czzs2011.xls',sheet1$)SQL语句导入/导出EXCEL导入/导出生成Excel--从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:/**//**//**//*============================== =====================================*/ --如果接受数据导入的表已经存在insert into 表 select * fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)--如果导入数据并生成表select * into 表 fromOPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)/**//**//**//*============================== =====================================*/ --如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用: insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)select * from 表--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:--导出表的情况exec master..xp_cmdshell 'bcp 数据库名.dbo.表名out "c:\test.xls" -c -S"服务器名" -U"用户名" -P"密码"'--导出查询的情况exec master..xp_cmdshell 'bcp "select au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" -c -S"服务器名" -U"用户名" -P"密码"'/**//**//**//*--说明:c:\test.xls 为导入/导出的Excel文件名.sheet1$ 为Excel文件的工作表名,一般要加上$才能正常使用.--*/。
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳
![[SQL]将Excel表数据导入SQL Server2005的几种方法归纳](https://img.taocdn.com/s3/m/ea168142be1e650e52ea9912.png)
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳近日在巨轮着手车间负荷数据处理,反馈回来的数据是保存在Excel文件中的,我必须将其导入SQL Server2005中,供存储过程计算。
由于之前没有将Excel数据导入SQL Server2005的经验,因此摸索着花了一天时间才搞定。
下面将网上收集到的几种导入方法做个归纳。
方法一、利用SQL Server2005自带的DTS工具,手工导入:第一步是点击开始并选择运行并输入CMD然后在命令提示符里输入DTSWIZARD。
SQL Server 导入和导出向导的欢迎界面将显示出来,如下图所示:(也可以这样打开该界面:1、登录到 SQL Server Management Studio。
2、在“对象资源管理器”中右键单击“管理”,在弹出列表中单击“导入数据”。
)当你点击下一步按钮时,它将进入选择数据源向导界面。
用户应该选择数据源为Microsoft Office 12.0 Access Database Engine OLE DB Provider 然后在向导界面中点击属性…按钮,它将弹出数据链接属性界面。
在所有标签页中,双击数据源属性值并输入电子数据表的位置,例如“C:\Excel2007\Import\SampleData.xlsx”作为导入数据的数据源的Microsoft Office Excel 2007文件名称和路径。
然后双击扩展属性并选择Excel 12.0作为属性值。
到Microsoft Office Excel 2007的连接可以通过点击测试连接按钮来进行测试,如下图所示:在下一个页面中,数据源需要选为SQL Native Client,因为数据将导入到SQL Server 2005。
然后你需要选择数据所要导入的服务器名称,并需要配置合适的验证模式,它之后跟着数据库名称。
在这个例子中,我们将使用windows验证连接到本地SQL Server实例,所使用的数据库将是ImportExcel。
如何将数据从 Excel 导入到 SQL Server

本文循序渐进地演示如何用不同的方法将数据从Microsoft Excel 工作表导入到Microsoft SQL Server 数据库。
回到顶端技术说明本文中的示例使用以下工具导入Excel 数据:∙SQL Server 数据传输服务(DTS)∙Microsoft SQL Server 2005 Integration Services (SSIS)∙SQL Server 链接服务器∙SQL Server 分布式查询∙ActiveX 数据对象(ADO) 和Microsoft OLE DB Provider for SQL Server∙ADO 和Microsoft OLE DB Provider for Jet 4.0回到顶端要求下面的列表列出了推荐使用的硬件、软件、网络架构以及所需的Service Pack:∙Microsoft SQL Server 7.0、Microsoft SQL Server 2000 或Microsoft SQL Server 2005 的可用实例∙Microsoft Visual Basic 6.0(针对使用Visual Basic 的ADO 示例)本文的部分内容假定您熟悉下列主题:∙数据传输服务∙链接服务器和分布式查询∙Visual Basic 中的ADO 开发回到顶端示例导入与追加本文使用的示例SQL 语句演示了“创建表”查询。
该查询通过使用SELECT...INTO...FROM 语法将Excel 数据导入新的SQL Server 表。
如这些代码示例所示,在继续引用源对象和目标对象时,可以通过使用INSERT INTO...SELECT...FROM 语法将这些语句转换成追加查询。
使用DTS 或SSIS可以使用“SQL Server Data Transformation Services (DTS) 导入向导”或“SQL Server 导入和导出向导”将Excel 数据导入到SQL Server 表中。
ExcelVBA导入Excel中数据到SQLServer中

[方法一]如何把EXCEL中的数据导入SQL SERVER数据库中(2010-12-30 17:16:53)有时候需要把E XCEL中的数据导入到数据库中。
一条一条的在数据库中建数据显然不可取,如何找一条快捷的途径进行转换是很有必要的。
在这里主要是介绍一种在EX CEL中用V BA进行编程,把EXCEL的数据转换成S QL语句,存入到一个文件中,然后在数据库服务器上提交这些SQL语句来实现。
一、两边的数据格式(一)数据库的表结构生成数据库表的SQL语句如下:createtable Address(ID Integer identit y(1,1) not null primary key,Name varchar(20) not null,Dept varchar(50),Spell varchar(20),Mobile varchar(11),Tel varchar(20),EMail varchar(30),VOIP varchar(6),Remark varchar(200),);EXCEL中的数据格式(二)转换的VBA函数Sub Generat eSQL()Dim i, k As LongDim s As StringOpen "d:\txl.sql" For OutputAs #1 '打开一个文件以供输入SQL语句i = 2While Cells(i, 1) <> ""s = "INSERTINTO ADDRESS (Name,Dept,Mobile,Tel,VOIP,EMail) VALUES("For k = 1 To 5s = s & "'" & Cells(i, k) & "',"Nexts = s & "'" & Cells(i, 6) & "');"Print #1, s '输出一条语句至文件i = i + 1WendClose #1 '关闭文件End Sub以上的代码用于逐行把数据转换成SQL语句写入“d:\txl.sql”中。
Excel与SQLServer数据交互

Excel与SQLServer数据交互第⼀部分:在Excel导⼊SQL Server中的数据:1. 在“数据”选项卡上的“获取外部数据”组中,单击“⾃其他来源”,然后单击“来⾃SQL Server”。
2. 在“服务器名称”框中,键⼊要连接的 SQL Server 计算机的名称。
3. 在“登录凭据”下,执⾏下列操作之⼀:3.1. 要使⽤当前的 Microsoft Windows⽤户名和密码,请单击“使⽤Windows ⾝份验证”。
2. 要输⼊数据库⽤户名和密码,请单击“使⽤下列⽤户名和密码”,然后在相应的“⽤户名”和“密码”框中键⼊您的⽤户名和密码。
3. 在“选择数据库”下,选择⼀个数据库。
在“连接到指定表”下,选择⼀个特定的表或视图。
或者,也可以清除“连接到指定表”复选框,以便系统向使⽤此连接⽂件的其他⽤户提⽰表和视图的列表。
4. (可选)在“⽂件名”框中,修改建议的⽂件名。
单击“浏览”以更改默认⽂件位置(“我的数据源”)。
5. (可选)分别在“说明”、“友好名称”和“搜索关键字”框中键⼊对⽂件的说明、友好名称及常⽤搜索⽂字。
6. 要确保更新数据时始终使⽤该连接⽂件,请单击“始终尝试使⽤此⽂件来刷新此数据”复选框。
此选项可确保使⽤该连接⽂件的所有⼯作簿始终会使⽤对该连接⽂件的更新。
7. 若要指定在将⼯作簿发布到 Sharepoint Foundation 2010⽹站并在 Web浏览器中打开它时如何访问数据透视表的外部数据源,请单击“验证设置”,然后选择以下选项之⼀以登录到相应的数据源:8.9. 单击“确定”,然后单击“完成”以关闭“数据连接向导”。
10. 将显⽰“导⼊数据”对话框。
11. 在“请选择该数据在⼯作簿中的显⽰⽅式”下,执⾏下列操作之⼀:12.Windows⾝份验证选择此选项可使⽤当前⽤户的 Windows⽤户名和密码。
这是最安全的⽅法,但在许多⽤户连接到服务器的情况下,此⽅法会影响性能。
sqlserver 2008 r2 引用excel表

sqlserver 2008 r2 引用excel表1.启用Linked Servers:首先,你需要确保你的SQL Server 实例已经启用了Linked Servers 功能。
你可以通过以下T-SQL 查询来检查:sqlEXEC sp_serveroption 'YourServerName', 'Allow Linked Servers', 'TRUE';2.创建Linked Server:假设你的Excel 文件位于C:\YourPath\YourExcelFile.xlsx,你可以使用以下T-SQL 语句创建一个链接到该Excel 文件的Linked Server:sqlE XEC sp_addlinkedserver@server = 'ExcelServer', -- 你可以自定义这个名称@provider = 'Microsoft.ACE.OLEDB.12.0', -- 使用 ACE 提供程序@datasrc = 'C:\YourPath\YourExcelFile.xlsx', -- 指定 Excel 文件的路径@catalog = 'YourWorkbookName$'; -- 这里指定工作簿的名称,通常是默认的工作簿名称。
3.查询Excel 表格:一旦你已经创建了Linked Server,你就可以像查询普通的SQL Server 表一样查询Excel 表了。
例如:sqlSELECT * FROM ExcelServer.YourWorkbookName$.YourSheetName;其中YourSheetName是你想要查询的工作表的名称。
4.注意事项:•确保你的Excel 文件和SQL Server 实例都在同一台机器上,或者你可以配置Linked Server 使用正确的网络路径。
Excel导入Sql

Excel导入SQL方法一:利用BCP导入SQL中,比通过Excel——dataTable——SQL效率高,可用于处理大量数据的Excel实例:通过OpenFileDialog对话框选择Excel,导入数据库Lab中,若Lab中表sheet1已存在则直接导入,不存在则创建sheet1再导入private void button1_Click(object sender, EventArgs e){//测试,将excel中的sheet1导入到sqlserver中string connString = "server=localhost;uid=sa;pwd=llj;database=Lab";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 = newSystem.Data.SqlClient.SqlConnection(connectionString)){sqlconn.Open();System.Data.SqlClient.SqlCommand command = sqlconn.CreateCommand();mandText = strSql;command.ExecuteNonQuery();sqlconn.Close();}//用bcp导入数据using (System.Data.SqlClient.SqlBulkCopy bcp = newSystem.Data.SqlClient.SqlBulkCopy(connectionString)){bcp.SqlRowsCopied += newSystem.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();}方法二//思路:将Excle文件导入myDataSet——从Sql中得到SqlDataSet——使用DataTable的ImportRow函数将myDataSet的数据填充到SqlDataSet——使用SqlDataAdapter的Update()函//数更新数据库private DataSet CreateDataSource(){string strConn;strConn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =E:\\小学\\b.xls;Extended Properties=Excel 8.0";OleDbConnection conn = new OleDbConnection(strConn);OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$] ", strConn);DataSet myDataSet = new DataSet();myCommand.Fill(myDataSet);return myDataSet;}SqlConnection conn;SqlDataAdapter sda;private Boolean dbUpdate(){conn = new SqlConnection("Server=.;Database=Lab;Trusted_Connection=SSPI;");sda = new SqlDataAdapter("select * from [Lab2]", conn);DataSet ds = new DataSet();sda.Fill(ds);System.Data.DataTable dtUpdate = new System.Data.DataTable();dtUpdate = ds.Tables[0];dtUpdate.Rows.Clear();DataSet dtSet = CreateDataSource();System.Data.DataTable dtShow = dtSet.Tables[0];for (int i = 0; i < dtShow.Rows.Count; i++){dtUpdate.ImportRow(dtShow.Rows[i]);//将dtShow中数据复制到dtUpdate中}this.conn.Open();SqlCommandBuilder CommandBuiler;//自动生成单表命令,用于对DataSet所做的更改于关联的SQL Server数据库的更改相协调CommandBuiler = new SqlCommandBuilder(this.sda);this.sda.Update(dtUpdate);//为dataTable dtUpdate的插入,删除,更改的行调用相应得insert,delete,update语句,即更新数据集,更新数据库this.conn.Close();dtUpdate.AcceptChanges();return true;}private void button1_Click(object sender, EventArgs e){dataGridView1.DataSource = null;dbUpdate();SqlConnection conn = newSqlConnection("Server=.;Database=Lab;Trusted_Connection=SSPI;");SqlDataAdapter sda = new SqlDataAdapter("select * from [Lab2] where 实验室=100", conn);DataSet ds = new DataSet();sda.Fill(ds);dataGridView1.DataSource =ds.Tables[0]; }。
将Excel数据保存至Sqlserver

将Excel数据保存至Sqlserver在此仅提供一种方法。
1、将Excel文件上传至服务器的指定目录内;2、数据量较小且Sqlserver表中具有与Excel表字段一致或包含。
------------------------------------------------------------------------------//准备基本参数。
(1、读取Excel数据到DataSet中来,2、将DataSet中的数据一次性写入到SqlServer中。
)string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +filepath+";Extended Properties=Excel 8.0;";OleDbConnection conn = new OleDbConnection(strConn);conn.Open ();//以下语句中[sheet1$]是定义在Excel中的数据表名称,并且第一行需要包含列名,空行(特别是最后的空行),都需要删除,保证数据区域的方块性。
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [sheet1$]", strConn);DataSet ExcelDataSet = new DataSet();myCommand.Fill(ExcelDataSet);//建立写SqlServer的连接。
strConn=System.Configuration.ConfigurationSettings.AppS ettings["linktodata"].ToString();SqlConnection sqlConnection=new SqlConnection(strConn);string strSQL="select * from personinfo where 1=0";//两个数据表一定要具有相同的结构.特别是数据类型.如果personinfo表中存在数据,则先要执行删除.SqlDataAdapter sqlDataAdapter=new SqlDataAdapter(strSQL,sqlConnection);//建立适配器中Sql语句。
VB实现Excel数据导入SQL+Server方法解析.pdf

strsql = " select * from OpenDataSource ( 'Microsoft.Jet. OLEDB.4.0', 'Data Source = " & CommonDialog1.FileName & " ;Extended properties=Excel 8.0') ... [Sheet1$] where 井号<> ' 合计 '"
2.1.1 数据库连接及提取记录集字符串
Strconn=" Provider=SQLOLEDB.1;Persist Security Info=False;
User ID =sa;password =qaz;Initial Catalog =scsjk;Data Source = ( lo-
cal) " , 其 中 User =sa;password =qaz,initial Catalog =scsjk;Data
1 前期准备
1.1 数据准备 为了使示例能够正常运行,需要在本机上安装 Microsoft
SQL Server2000 数据库、Visual Basic6.0 及 Microsoft Excel (版 本在 2003 以上),并准备一个 Excel 数据文件 (必须是数据格 式,这里以油田某日的生产数据个别字段为例),格式如表 1 所示,数据记录数 (行) 和字段数 (列) 可根据需要增加。
此种方法与上一种的不同之处在于这里使用了 OpenData-
Source 的方法来取得记录集,该方法的语法详细说明如下:
OPENDATASOURCE ( provider_name, init_string )
excell表格数据导入到SQL2000数据库

EXCELL文件导入到SQLSERVER 2000的方法
SQLSERVER 2000数据库的基础数据录入工作是一项比较繁重的体力活,特别是前期已经有了大量的EXCELL数据整理表格,要重新输入到SQL时,方法和效率显得格外重要。
根据我的心得,为大家提供一种简单的方法,实现快速的将EXCELL数据表导入到SQL数据表。
案例使用SQLSERVER 2000
第一步:将整理好的EXCELL另存为文本文件(制表符分隔)
图1
第二步:打开企业管理器,选择数据库,并导入数据
图2
第三步:选择数据源为“文本文件”,并链接另存为的文本文件
第三步:新建数据库和数据表
第四步:导入数据
第五步:查看数据库
这样导入的数据表中,没有主键字段,别忘了去设计数据表,定义主键。
大功告成,祝你工作愉快!。
Excel表格里的数据导入SQLSERVER数据库

使用第三方工具
总结词
除了SQL Server自带的功能外,还有许多第三方工具可以帮助用户将Excel数据导入SQL Server。
详细描述
这些第三方工具通常提供了更多的功能和灵活性,例如支持更多的文件格式、自动映射列、数据清洗和转换等。 用户可以根据自己的需求选择合适的工具,如DataGrip、Tableau、Power BI等。
逻辑检查
检查数据是否符合业务逻 辑,如年龄字段是否合理。
参照完整性
检查外键引用是否有效, 关联的数据是否一致。
数据性能优化
索引优化
根据查询需求,为常用查询字段 建立合适的索引。
查询优化
优化导入后的查询语句,提高查询 效率。
数据分区
根据数据的特点和使用频率,对表 进行分区管理。
THANKS
感谢观看
02
Excel数据导入SQL Server的方法
使用SQL Server Integration Services (SSIS)
总结词
SSIS是SQL Server提供的一个强大的ETL工具,可以用来导入、导出和转换数据 。
详细描述
通过SSIS,用户可以创建一个数据流任务,将Excel文件作为源数据,然后将其导入 到SQL Server数据库中。在SSIS中,用户可以定义数据清洗、转换和加载的规则, 确保数据准确无误地导入到目标表中。
通过导入Excel数据到SQL Server, 可以自动化地完成数据清洗、转换 和加载等任务,减少手动操作的时 间和人力成本。
批量处理
导入大量数据时,使用SQL Server的批量导入功能可以显著 提高数据处理的效率,减少等待 时间。
保证数据一致性
数据格式统一
数据库管理与应用将Excel数据导入SQL Server

将Excel数据导入SQL Server 首先将收集来的Excel文件放置在磁盘的某个位置,例如,d:\data\rpt1.xls。
通过SQL Server Management Studio,将其导入到SQL Server 2008数据库中。
操作步骤如下:(1)打开SQL Server Management Studio窗口,打开“数据库”节点。
(2)在要转换的数据库上右击鼠标,例如gsxsk数据库(可自行建一数据库gsxsk)。
在打开的快捷菜单上选择“任务” “导入数据”命令,打开“SQL Server导入和导出向导”对话框。
(3)单击“下一步”按钮,向导提示选择数据源,如图11-1所示。
在“数据源”下拉列表框中选择Microsoft Excel,表示将Excel数据导入到SQL Server中。
然后在“Excel连接设置”栏中,设置Excel文件的保存路径和Excel的版本。
图11-1 数据源界面
(4)单击“下一步”按钮,向导提示选择目标数据源,如图11-2所示。
在“目标”下拉列表中选择数据源类型,在“服务器”列表框中选择服务器,并设置验证模式。
在“数据库”下拉列表框中选择数据库。
图11-2 目标界面
(5)单击“下一步”按钮,向导提示用户指定表复制或者查询复制,如图11-3所示。
其中两个单选按钮的含义如下:。
将Excel文件数据导入到SqlServer数据库

将Excel文件数据导入到SqlServer数据库的三种方案方案一:通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server,这种方法的优点是非常的灵活,可以对Excel表中的各个单元格进行用户所需的操作。
1.openFileDialog = new OpenFileDialog();2.openFileDialog.Filter = "Excel files(*.xls)|*.xls";3.4.if(openFileDialog.ShowDialog()==DialogResult.OK)5.{6. FileInfo fileInfo = new FileInfo(openFileDialog.FileName);7. string filePath = fileInfo.FullName;8. string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0";9.10. try11. {12. OleDbConnection oleDbConnection = new OleDbConnection(connExcel);13. oleDbConnection.Open();14.15. //获取excel表16. DataTable dataTable =oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);17.18. //获取sheet名,其中[0][1]...[N]: 按名称排列的表单元素19. string tableName = dataTable.Rows[0][2].ToString().Trim();20. tableName = "[" + tableName.Replace("'","") + "]";21.22. //利用SQL语句从Excel文件里获取数据23. //string query = "SELECTclassDate,classPlace,classTeacher,classTitle,classID FROM " + tableName;24. string query = "SELECT 日期,开课城市,讲师,课程名称,持续时间 FROM " + tableName;25. dataSet = new DataSet();26.27. //OleDbCommand oleCommand = new OleDbCommand(query, oleDbConnection);28. //OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);29. OleDbDataAdapter oleAdapter = new OleDbDataAdapter(query,connExcel);30. oleAdapter.Fill(dataSet,"gch_Class_Info");31. //从excel文件获得数据后,插入记录到SQL Server的数据表32. DataTable dataTable1 = new DataTable();33.34. SqlDataAdapter sqlDA1 = new SqlDataAdapter(@"SELECT classID, classDate,35.classPlace, classTeacher, classTitle, durativeDate FROMgch_Class_Info",sqlConnection1);36.37. //SqlCommandBuilder sqlCB1 = new SqlCommandBuilder(sqlDA1);38.39. sqlDA1.Fill(dataTable1);40.41. foreach(DataRow dataRow in dataSet.Tables["gch_Class_Info"].Rows)42. {43. DataRow dataRow1 = dataTable1.NewRow();44.45. dataRow1["classDate"] = dataRow["日期"];46. dataRow1["classPlace"] = dataRow["开课城市"];47. dataRow1["classTeacher"] = dataRow["讲师"];48. dataRow1["classTitle"] = dataRow["课程名称"];49. dataRow1["durativeDate"] = dataRow["持续时间"];50.51. dataTable1.Rows.Add(dataRow1);52. }53.54. Console.WriteLine("新插入 " + dataTable1.Rows.Count.ToString() + " 条记录");55. sqlDA1.Update(dataTable1);56.57. oleDbConnection.Close();58.59. }60. catch(Exception ex)61. {62. Console.WriteLine(ex.ToString());63. }64.}方案二:直接通过SQL语句执行SQL Server的功能函数将Excel文件转换到SQL Server 数据库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//方案一:通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL ServeropenFileDialog = new OpenFileDialog();openFileDialog.Filter = "Excel files(*.xls)|*.xls";if(openFileDialog.ShowDialog()==DialogResult.OK){FileInfo fileInfo = new FileInfo(openFileDialog.FileName);string filePath = fileInfo.FullName;string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0";try{OleDbConnection oleDbConnection = new OleDbConnection(connExcel);oleDbConnection.Open();//获取excel表DataTable dataTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);//获取sheet名,其中[0][1]...[N]: 按名称排列的表单元素string tableName = dataTable.Rows[0][2].ToString().Tri m();tableName = "[" + tableName.Replace("'","") + "]";//利用SQL语句从Excel文件里获取数据//string query = "SELECT classDate,classPlace,classTeacher,classTitle,classID FROM " + tableName;string query = "SELECT 日期,开课城市,讲师,课程名称,持续时间FROM " + tableName;dataSet = new DataSet();//OleDbCommand oleCommand = new OleDbCommand(query, oleDbConnection);//OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);OleDbDataAdapter oleAdapter = new OleDbDataAdapter(query,connExcel);oleAdapter.Fill(dataSet,"gch_Class_Info");//dataGrid1.DataSource = dataSet;//dataGrid1.DataMember = tableName;dataGrid1.SetDataBinding(dataSet,"gch_Class_Info");//从excel文件获得数据后,插入记录到SQL Server的数据表DataTable dataTable1 = new DataTable();SqlDataAdapter sqlDA1 = new SqlDataAdapter(@"SELECT classID, classDate,classPlace, classTeacher, classTitle, durativeDate FROM gch_Class_Info",sqlConnection1);SqlCommandBuilder sqlCB1 = new SqlCo mmandBuilder(sqlDA1);sqlDA1.Fill(dataTable1);foreach(DataRow dataRow in dataSet.Tables["gch_Class_Info"].Rows){DataRow dataRow1 = dataTable1.NewRow();dataRow1["classDate"] = dataRow["日期"];dataRow1["classPlace"] = dataRow["开课城市"];dataRow1["classTeacher"] = dataRow["讲师"];dataRow1["classTitle"] = dataRow["课程名称"];dataRow1["durativeDate"] = dataRow["持续时间"];dataTable1.Rows.Add(dataRow1);}Console.WriteLine("新插入" + dataTable1.Rows.Count.ToString() + " 条记录");sqlDA1.Update(dataTable1);oleDbConnection.Close();}catch(Exception ex){Console.WriteLine(ex.ToString());}}//方案二:直接通过SQL语句执行SQL Server的功能函数将Excel文件转换到SQL Server数据库OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "Excel files(*.xls)|*.xls";SqlConnection sqlConnection1 = null;if(openFileDialog.ShowDialog()==DialogResult.OK){string filePath = openFileDialog.FileName;sqlConnection1 = new SqlConnection();sqlConnection1.ConnectionString = "server=(local);integrated security=SSPI;initial catalog=Library";//import excel into SQL Server 2000/*string importSQL = "SELECT * into live41 FROM OpenDataSource" +"('Microsoft.Jet.OLEDB.4.0','Data Source=" + "\"" + "E:\\022n.xls" + "\"" +"; User ID=;Password=; Extended properties=Excel 5.0')...[Sheet1$]";*///export SQL Server 2000 into excelstring exportSQL = @"E XEC master..xp_cmdshell'bcp Library.dbo.live41 out " + filePath + "-c -q -S" + "\"" + "\"" +" -U" + "\"" + "\"" + " -P" + "\"" + "\"" + "\'";try{sqlConnection1.Open();//SqlCommand sqlCommand1 = new SqlCommand();//sqlCommand1.Connection = sqlConnection1;//mandText= importSQL;//sqlCommand1.ExecuteNonQuery();//MessageBox.Show("import finish!");SqlCommand sqlCommand2 = new SqlCommand();sqlCommand2.Connection = sqlConnection1;sqlCommand2.Co mmandText = exportSQL;sqlCommand2.ExecuteNonQuery();MessageBox.Show("export finish!");}catch(Exception ex){MessageBox.Show(ex.ToString());}}if(sqlConnection1!=null){sqlConnection1.Close();sqlConnection1 = null;}//方案三:通过到入Excel的VBA dll,通过VBA接口获取E xcel数据到DataSetOpenFileDialog openFile = new OpenFileDialog(); openFile.Filter = "Excel files(*.xls)|*.xls";ExcelIO excelio = new ExcelIO();if(openFile.ShowDialog()==DialogResult.OK){if(excelio!=null)excelio.Close();excelio = new ExcelIO(openFile.FileName);object[,] range = excelio.GetRange();excelio.Close();DataSet ds = new DataSet("xlsRange");int x = range.GetLength(0);int y = range.GetLength(1);DataTable dt = new DataTable("xlsTable"); DataRow dr;DataColumn dc;ds.Tables.Add(dt);for(int c=1; c<=y; c++){dc = new DataColumn();dt.Columns.Add(dc);}object[] temp = new object[y];for(int i=1; i<=x; i++){dr = dt.NewRow();for(int j=1; j<=y; j++){temp[j-1] = range[i,j];}dr.ItemArray= temp;ds.Tables[0].Rows.Add(dr);}dataGrid1.SetDataBinding(ds,"xlsTable");if(excelio!=null)excelio.Close();}。