将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. 打开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导入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 Server与Excel中数据的导入导出基本方法
从SQL Server中导入/导出Excel的基本方法从sql server中导入/导出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 frompubs..authors order by au_lname" queryout "c:test.xls" /c -/s"服务器名" /u"用户名" -p"密码"/*--说明:c:test.xls 为导入/导出的excel文档名.sheet1$ 为excel文档的工作表名,一般要加上$才能正常使用.--*/--上面已说过,用bcp导出的是类excel文档,其实质为文本文档,--要导出真正的excel文档.就用下面的方法/*--数据导出excel导出表中的数据到excel,包含字段名,文档为真正的excel文档,假如文档不存在,将自动创建文档,假如表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10--*//*--调用示例p_exporttb @tbname=地区资料,@path=c:,@fname=aa.xls--*/if exists (select * from dbo.sysobjects where id = object_id(n[dbo].[p_exporttb]) and objectproperty(id, nisprocedure) = 1)drop procedure [dbo].[p_exporttb]gocreate proc p_exporttb@tbname sysname, --要导出的表名@path nvarchar(1000), --文档存放目录@fname nvarchar(250)= --文档名,默认为表名asdeclare @err int,@src nvarchar(255),@desc nvarchar(255),@out int declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist 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=" +;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+,[++]+case when in(char,nchar,varchar,nvarchar) thentext(+cast(case when a.length>255 then 255 else a.length end as varchar)+)when in(tynyint,int,bigint,tinyint) then intwhen in(smalldatetime,datetime) then datetimewhen in(money,smallmoney) then moneyelse endfrom syscolumns a left join systypes b on a.xtype=b.xusertypewhere notin(image,text,uniqueidentifier,sql_variant,ntext,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 5.0;hdr=yes;database=+@path+@fname+,[+@tbname+$])exec(insert into +@sql+(+@fdlist+) select +@fdlist+ from +@tbname) returnexec sp_oageterrorinfo 0,@src out,@desc outlbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgo--上面是导表的,下面是导查询语句的./*--数据导出excel导出查询中的数据到excel,包含字段名,文档为真正的excel文档,假如文档不存在,将自动创建文档,假如表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--邹建2003.10--*//*--调用示例p_exporttb @sqlstr=select * from 地区资料,@path=c:,@fname=aa.xls,@sheetname=地区资料--*/if exists (select * from dbo.sysobjects where id = object_id(n[dbo].[p_exporttb]) and objectproperty(id, nisprocedure) = 1)drop procedure [dbo].[p_exporttb]gocreate proc p_exporttb@sqlstr varchar(8000), --查询语句,假如查询语句中使用了order by ,请加上top 100 percent@path nvarchar(1000), --文档存放目录@fname nvarchar(250), --文档名@sheetname varchar(250)= --要创建的工作表名,默认为文档名declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)--参数检测if isnull(@fname,)= set @fname=temp.xlsif 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=" +;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+) aexec(@sql)select @sql=,@fdlist=select @fdlist=@fdlist+,[++],@sql=@sql+,[++]+case when in(char,nchar,varchar,nvarchar) thentext(+cast(case when a.length>255 then 255 else a.length end as varchar)+)when in(tynyint,int,bigint,tinyint) then intwhen in(smalldatetime,datetime) then datetimewhen in(money,smallmoney) then moneyelse endfrom tempdb..syscolumns a left join tempdb..systypes b ona.xtype=b.xusertypewhere notin(image,text,uniqueidentifier,sql_variant,ntext,varbinary,binary,timestamp) and a.id=(select id from tempdb..sysobjects where name=@tbname) select @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 5.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 out lbexit:select cast(@err as varbinary(4)) as 错误号,@src as 错误源,@desc as 错误描述select @sql,@constr,@fdlistgo。
Excel文件导入数据到SQL数据库
从Excel文件导入数据到SQL数据库将Excel文件gongzibiao.xls中的数据导入到SQL Server 2005中。
----导入数据并生成表在SQL SERVER 2005新建数据库wangzhengwei,然后鼠标右键新建查询,输入select*into MyUser_gz from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=D:\胡兴\MyBook2.xls',sheet1$)将生成MyUser_gz表。
如果出现:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。
系统管理员可以通过使用 sp_configure 启用 'Ad HocDistributed Queries'。
有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
解决办法是在新建的数据库上右键新建查询,然后输入下面代码:EXEC sp_configure 'show advanced options', 1GORECONFIGUREGOEXEC sp_configure 'Ad Hoc Distributed Queries', 1GORECONFIGUREGO然后再执行select*into MyUser_gz from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;HDR=YES;DATABASE=D:\胡兴\MyBook2.xls',sheet1$)注意:在执行之前必须把对应的.xls文件关闭。
[SQL]将Excel表数据导入SQL Server2005的几种方法归纳
[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 表中。
将Excel文件数据导入到SqlServer数据库的三种方案
将Excel⽂件数据导⼊到SqlServer数据库的三种⽅案最近在⼀个项⽬中需要⽤到Excel⽂件导⼊数据库的功能,本⼈很懒,所以到⽹上搜了⼀堆⽅法,但是通过对⽐,觉得⼀下三种是⽐较好⽤或者不是很常见的⽅法,希望对⼤家有所帮助。
⽅案⼀:通过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 = "SELECT classDate,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 FROM gch_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数据库。
excel与sqlserver数据库之间的数据交换
excel与sqlserver数据库之间的数据交换1。
如果从sql数据库中,导出数据到excel,如果excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用: insert into openrowset(microsoft.jet.oledb.4.0,excel 5.0;hdr=yes;database=c:\test.xls,sheet1$)select * from 表名2。
如果excel文件不存在,也可以用bcp来导成类excel的文件,注意大小写:--导出表的情况exec master..xp_cmdshell bcp 数据库名.dbo.表名 out "c:\test.xls" /c -/s"服务器名" /u"用户名" -p"密码"3。
导出查询的情况exec master..xp_cmdshell bcp "sql 查询语句" queryout "c:\test.xls" /c -/s"服务器名" /u"用户名" -p"密码"4。
excel导入sql server如果你的student表结构与以下内容匹配.95001李勇男20cs95002刘晨女19is95003王敏女18ma95004张立男17is那么用下面这个就可以insert into studentselect *from opendatasource(microsoft.jet.oledb.4.0,data source ="c:\zt.xls";extended properties="excel 8.0";persist security info=false)...[a1$]-------------------------------------------------------------DTS进行导入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、会看到整个操作的摘要,按完成即可。
将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语句。
将Excel转换为SQLServer数据库方法详解
作者:cuicheng0826 日期:2011-5-11 10:26:47Excel是一种非常灵活的电子表格软件,用它可以存储各种数据,本节将对如何将Excel转换为SQL Server进行详细介绍。
1.方案分析通过Microsoft.Jet.OLEDB.4.0方式可实现使用访问Excel的目的,如以下示例代码为连接Excel数据的字符串:string strOdbcCon = @”Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:”2010年图书销售情况.xls;Extended Properties=Excel 8.0″;2.实施过程程序开发步骤:(1)新建一个网站,命名为25,其主页默认为Default.aspx。
(2)Default.aspx页面中添加一个Table表格,用来布局页面,然后在该Table表格中添加一个iframe 框架、两个Button控件和一个GridView控件,其中,iframe框架用来显示原始Excel数据表中的数据;Button控件分别用来将指定Excel中的数据表导入到SQL Server数据库中和将导入SQL Server 数据库中的Excel数据绑定到GridView控件上;GridView控件用来显示导入SQL Server数据库中的Excel数据。
(3)程序主要代码如下。
Default.aspx页面中,首先自定义一个LoadData方法,该方法为无返回值类型方法,主要用来将Excel 数据表中的数据导入到SQL Server数据库中。
LoadData方法实现代码如下:public void LoadData(string StyleSheet){string strCon = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source =” + Server.MapPath(”usersdb.xls”) + “;Extended Properties=Excel 8.0″;OleDbConnection myConn = new OleDbConnection(strCon);myConn.Open(); //打开数据链接,得到一个数据集DataSet myDataSet = new DataSet(); //创建DataSet对象string StrSql = “select * from [" + StyleSheet + "$]“;OleDbDataAdapter myCommand = new OleDbDataAdapter(StrSql, myConn); myCommand.Fill(myDataSet, “[" + StyleSheet + "$]“);myCommand.Dispose();DataTable DT = myDataSet.Tabl es[ "[" + StyleSheet + "$]“];myConn.Close();myCommand.Dispose();string strConn = “Data Source=(local);DataBase=Usersdb;Uid=sa;Pwd=”; SqlConnection conn = new SqlConnection(strConn);conn.Open();for (int j = 0; j < DT.Rows.Count; j++){string UserID = DT.Rows[j][0].ToString();string EmailAddress = DT.Rows[j][1].ToString();string FirstName = DT.Rows[j][2].ToString();string LastName = DT.Rows[j][3].ToString();string Address1 = DT.Rows[j][4].ToString();string Address2 = DT.Rows[j][5].ToString();string City = DT.Rows[j][6].ToString();string strSql = “insert into Usersdb(EmailAddress,FirstName,LastName,Address1,Address2,City) “;strSql = strSql + “values(’” + EmailAddress + “‘,’” + FirstName + “‘,‘” + LastName + “‘,’” + Address1 + “‘,’” + Address2 + “‘,’” + City + “‘)”;SqlCommand comm = new SqlCommand(strSql, conn);comm.ExecuteNonQuery();if (j == DT.Rows.Count - 1){Label1.Visible = true;}else{Label1.Visible = false;}}conn.Close();}单击【Excel数据写入数据库中】按钮,定义一个string类型的变量,用来为LoadData传入参数,然后调用LoadData自定义方法将指定的Excel中的数据表导入到SQL Server数据库中。
SQL SERVER 与ACCESS、EXCEL的数据转换
SQL SERVER 与ACCESS、EXCEL的数据转换熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。
在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。
利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下:SQL SERVER 与ACCESS、EXCEL的数据转换熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。
在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。
利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下:一、SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤: 1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation 2Services(数据转换服务),然后选择 czdImport Data(导入数据)。
3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。
4在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。
SQL SERVER 与ACCESS、EXCEL的数据转换
SQL SERVER 与ACCESS、EXCEL的数据转换熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出*作。
在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。
利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下:一、SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤: ○1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation ○2Services(数据转换服务),然后选择 czdImport Data(导入数据)。
○3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。
○4在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。
○5在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables (复制表格)。
○6在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。
下一步,完成。
Transact-SQL语句进行导入导出:1.在SQL SERVER里查询access数据:SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名2.将access导入SQL server在SQL SERVER 里运行:SELECT *INTO newtableFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名3.将SQL SERVER表里的数据插入到Access表中在SQL SERVER 里运行:insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名(列名1,列名2)select 列名1,列名2 from sql表实例:insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:\db.mdb';'admin';'', Test)select id,name from TestINSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)SELECT *FROM sqltablename二、SQL SERVER 和EXCEL的数据导入导出1、在SQL SERVER里查询Excel数据:SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
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语句
excel 转sql语句Excel是一种常用的办公软件,它在数据管理中起到了非常重要的作用。
在日常工作中,我们有时需要将Excel中的数据转化为SQL语句进行数据操作或者数据迁移。
因此,掌握Excel转SQL语句的方法是一项非常重要的技能。
本文将详细介绍如何将Excel中的数据转换成SQL语句,并讲解一些常用的Excel转SQL语句的技巧。
一、Excel转SQL语句的基本步骤将Excel中的数据转换成SQL语句,需要进行如下几个步骤:1. 打开Excel表格,选中需要转换成SQL语句的数据,包括表头和数据内容。
2. 将Excel表格另存为CSV文件。
CSV文件是一种通用的数据文件格式,常用来存储表格数据,它可以被Excel和数据库管理系统等应用程序读取和处理。
3. 打开支持SQL语句的编辑器,如SQL Server Management Studio、Navicat等。
4. 用SQL语句创建数据库表格,并设置表格的字段属性,如字段名、数据类型、数据长度等。
5. 将CSV文件导入到数据库表格中,完成数据的迁移。
1. Excel表格中含有特殊字符在Excel表格中,有些数据可能包含特殊字符,如单引号、双引号等。
这些特殊字符会影响SQL语句的运行,因此需要将它们进行转义。
例如,如果Excel表格中有一列名称为“Tom's Book”,在SQL语句中需要将单引号转义成两个单引号,即“Tom''s Book”。
在Excel表格中,有些数据可能为空值。
当将表格转换成SQL语句时,需要将空值转换成NULL。
在Excel表格中,有些数据需要进行多表连接,比如关于客户和订单的信息。
这种情况下,需要在SQL语句中使用JOIN语句进行表格的连接。
例如,如果Excel表格中有一张客户信息表格和一张订单信息表格,客户信息表格中含有一个客户ID字段,订单信息表格中含有一个客户ID字段和一个订单金额字段,要查询每个客户的订单总金额,可以使用如下的SQL语句:SELECT , SUM(order.amount)FROM customerJOIN order ON customer.id = order.customer_id在Excel表格中,有些数据是日期类型的,需要正确地将其转换成SQL中的日期类型。
SQLSERVER与ACCESS、EXCEL的数据转换
SQL SERVER 与ACCESS、EXCEL的数据转换2004-09-01feixiang-ren 点击: 2670SQL SERVER 与ACCESS、EXCEL的数据转换熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。
在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。
利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下:一、SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤: 1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation 2Services(数据转换服务),然后选择czdImport Data(导入数据)。
3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。
4在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。
5在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables (复制表格)。
6在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。
下一步,完成。
Transact-SQL语句进行导入导出:1.在SQL SERVER里查询access数据:-- ======================================================SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:DB.mdb";User ID=Admin;Password=')...表名-------------------------------------------------------------------------------------------------2.将access导入SQL server-- ======================================================在SQL SERVER 里运行:SELECT *INTO newtableFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="c:DB.mdb";User ID=Admin;Password=' )...表名-------------------------------------------------------------------------------------------------3.将SQL SERVER表里的数据插入到Access表中-- ======================================================在SQL SERVER 里运行:insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source=" c:DB.mdb";User ID=Admin;Password=')...表名(列名1,列名2)select 列名1,列名2 from sql表实例:insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0','C:db.mdb';'admin';', Test)select id,name from TestINSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c: rade.mdb'; 'admin'; ', 表名) SELECT *FROM sqltablename-------------------------------------------------------------------------------------------------二、SQL SERVER 和EXCEL的数据导入导出1、在SQL SERVER里查询Excel数据:-- ======================================================SELECT *FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c: ook1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]下面是个查询的示例,它通过用于Jet 的OLE DB 提供程序查询Excel 电子表格。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作者:cuicheng0826 日期:2011-5-11 10:26:47
Excel是一种非常灵活的电子表格软件,用它可以存储各种数据,本节将对如何将Excel转换为SQL
1.方案分析
通过Microsoft.Jet.OLEDB.4.0方式可实现使用访问Excel的目的,如以下示例代码为连接Excel数据的字符串:
string strOdbcCon = @”Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=D:”2010年图书销售情况.xls;Ext ended Properties=Excel 8.0″;
2.实施过程
程序开发步骤:
(1)新建一个网站,命名为25,其主页默认为Default.aspx。
(2)Default.aspx页面中添加一个Table表格,用来布局页面,然后在该Table表格中添加一个iframe 框架、两个Button控件和一个GridView控件,其中,iframe框架用来显示原始Excel数据表中的数据;Button控件分别用来将指定Excel中的数据表导入到SQL Server数据库中和将导入SQL Server 数据库中的Excel数据绑定到GridView控件上;GridView控件用来显示导入SQL Server数据库中的Excel数据。
(3)程序主要代码如下。
Default.aspx页面中,首先自定义一个LoadData方法,该方法为无返回值类型方法,主要用来将Excel 数据表中的数据导入到SQL Server数据库中。
LoadData方法实现代码如下:
public void LoadData(string StyleSheet)
{
string strCon = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source =” + Server.MapPath
(”usersdb.xls”) + “;Extended Properties=Excel 8.0″;
OleDbConnection myConn = new OleDbConnection(strCon);
myConn.Open(); //打开数据链接,得到一个数据集
DataSet myDataSet = new DataSet(); //创建DataSet对象
string StrSql = “select * from [" + StyleSheet + "$]“;
OleDbDataAdapter myCommand = new OleDbDataAdapter(StrSql, myConn); myCommand.Fill(myDataSet, “[" + StyleSheet + "$]“);
myCommand.Dispose();
DataTable DT = myDataSet.Tables[ "[" + StyleSheet + "$]“];
myConn.Close();
myCommand.Dispose();
string strConn = “Data Source=(local);DataBase=Usersdb;Uid=sa;Pwd=”; SqlConnection conn = new SqlConnection(strConn);
conn.Open();
for (int j = 0; j < DT.Rows.Count; j++)
{
string UserID = DT.Rows[j][0].ToString();
string EmailAddress = DT.Rows[j][1].ToString();
string FirstName = DT.Rows[j][2].ToString();
string LastName = DT.Rows[j][3].ToString();
string Address1 = DT.Rows[j][4].ToString();
string Address2 = DT.Rows[j][5].ToString();
string City = DT.Rows[j][6].ToString();
string strSql = “insert into Usersdb(EmailAddress,FirstName,
LastName,Address1,Address2,City) “;
strSql = strSql + “values(‟” + EmailAddress + “…,‟” + FirstName + “…,
…” + LastName + “…,‟” + Address1 + “…,‟” + Address2 + “…,‟” + City + “…)”;
SqlCommand comm = new SqlCommand(strSql, conn);
comm.ExecuteNonQuery();
if (j == DT.Rows.Count - 1)
{
Label1.Visible = true;
}
else
{
Label1.Visible = false;
}
}
conn.Close();
}
单击【Excel数据写入数据库中】按钮,定义一个string类型的变量,用来为LoadData传入参数,然后调用LoadData自定义方法将指定的Excel中的数据表导入到SQL Server数据库中。
【Excel数据写入数据库中】按钮的Click事件代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
string StyleSheet = “Sheet1″;
LoadData(StyleSheet);
}
单击【显示导入SQL的Excel数据】按钮,将导入SQL Server数据库中的Excel数据绑定到GridView 控件上,显示在页面中。
【显示导入SQL的Excel数据】按钮的Click事件代码如下:
protected void Button2_Click(object sender, EventArgs e)
{
string strConn = “Data Source=(local);DataBase=Usersdb;Uid=sa;Pwd=”;
string sqlstr= “select * from Usersdb”;
SqlConnection conn = new SqlConnection(strConn);
SqlDataAdapter myda = new SqlDataAdapter(sqlstr,conn);
DataSet ds = new DataSet();
conn.Open();
myda.Fill(ds, “Usersdb”);
GridView1.DataSource = ds;
GridView1.DataBind();
conn.Close();
}
说明:程序中进行与Excel和SQL Server数据库相关的操作时,首先需要分别添加
System.Data.OleDb和System.Data.SqlClient命名空间。
3.补充说明
除了可以将Excel中数据导入到SQL Server数据库外,还可以将其转换为.txt文本文件格式,或者导入到Access或Oracle等数据库中。