SQL SERVER 与 EXCEL导入导出
- 格式:doc
- 大小:47.50 KB
- 文档页数:6
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指的是本机的⽂件路径。
SQL Server数据导入导出操作指南数据导入导出目的:当我们要把数据库中的某个表导到另一个数据库中或者导到磁盘上时,我们就要进行数据导入导出的操作。
(由于导出操作本质上是导入的逆过程,所以本文档将以导出操作进行重点讲解)(一)数据的导出在进行数据导出前,请先确保Sql server服务器端 Sql Server agent服务是否开启(包括源和目的),只有服务器端的Sql Server agent服务开启才能进行如下述的数据导出工作。
第一步:打开Sql企业管理器,选择你所要导出的数据库,并且点鼠标右键,选择“所有任务”里的“导出数据”选项,第二步: 选择“下一步”第三步:选择你所要导出的数据源的格式,数据源的服务器的名称,数据库登陆的验证模式,和将要进行数据导出的数据库。
(1)如果你要把一个表数据导出到文本文件时,你要在数据源中选择“文本文件”,(2)如果是要把一个数据库中的表导到另一个数据表中,你要在数据源中选择“用于SQL SERVER 的MICROSOFT OLE DB 提供程序”第四步:选择“下一步”,同样地,选择你所要导入的目的地格式,(1)如果你要导成文本格式时,你要在“目的”中选择文本文件,之后会出现如下窗口……并且选择你要把此文本导到的路径位置,选择“下一步”再选择“下一步”继续“下一步”这样就完成了把数据表导成文本文件的操作.(2)如果你想将表导到另一个数据库中时,你要在目的中选择“用于SQL SERVER的MICROSOFT OLE DB提供程序”,同时指定目的地的服务器的名称,目的地的数据库登陆的验证模式,和将要导入数据的数据库名。
第五步:选择“下一步”,然后指定是从数据源复制一个或多个表/视图,还是复制查询结果.(有三个选项,本文档以第一个为例进行讲解)第六步:选择“下一步”然后在要进行导出的表前打上钩(源),同时也选择你要把此表导到目的地的方式,(1)当你在目的中选择的表名在目的数据库中不存在时,选择下一步,出现如下窗口……………………..选择“下一步”再选择“完成”这样就把一个源中的表导到目的数据库中.(2)当你在目的中选择的表名在目的数据库中已经存在时,点击转换控键,出现如下窗口出现三个选项.选择第一个选项(创建目的表),表示会在目的数据库中重新建一个源数据表,并把已经存在的表删除.选择第二个选项(删除目的表中的行),表示会把已经存在的表中的内容删除(表的视图和索引不变),并从源数据表的内容重新导到此表中。
实验环境: WIN XP ,MS Office Excel 2007 ,Sql Server 2008准备数据: Excel文档: D:\test\重复出修率.xlsx方法一:第一步: 打开SSMS:【开始】→【所有程序】→【Microsoft Sql Server 2008】→【Sql Server Management Studio】第二步: 连接数据库:在’对象资源管理器’中点击【连接】→【数据库引擎】登陆服务器(P.S:如果没有看到’对象资源管理器’,点击左上角的【视图】→【对象管理器】)第三步: 登陆成功后,右击你要导入数据的数据库名,我这里数据库名是’TEST’右击【TEST】→【任务】→【导入数据】这时候会出现一个向导:点击【下一步】在弹出的窗口中,【数据源】选择:Microsoft Excel ;【Excel文件路径】就选择你本地电脑存放Excel文档的路径,我这里是D:\test\重复出修率.xlsx 【Excel版本】选择Excel 2007 (可以根据你office的版本,选择其他如Excel 2003等等。
)选中【首行包含列名称】框,最后点击【下一步】“首行包含列名称”是指Excel中的首行数据插入数据库后将作为新建表的列名.在弹出窗口中,【目标】可以采取默认的,【服务器名称】也是一样可以选择身份验证,最后选择你要插入数据到哪个数据库中。
如我这里选的是’TEST’,选好后点击【下一步】如果就把Excel数据插入一个新表,就选择【复制一个或多个表或视图的数据】如果想把Excel数据插入到已存在的一张表中,则选择下面的【编写查询以指定要传输的数据】我这里是选择上面一个,然后点击【下一步】接着会弹出Excel表中的sheet表名字,如果你没有修改过sheet表名字,则可能显示的是’shee1$’, ’shee2$’, ’shee3$’等等.然后你选中你想要导入的哪张表的数据,我这里导入的是【’aug$’】选中后,右边的【目标】栏位中会出现内容,dbo是指数据库的架构名,aug$只是新建的表名,如果你想修改表明,双击就可以表明进入编辑状态就可以修改了。
sqlserver怎么将excel表的数据导⼊到数据库中在数据库初始阶段,我们有些数据在EXCEL中做好之后,需要将EXCEL对应列名(导⼊后对应数据库表的字段名),对应sheet(改名为导⼊数据库之后的表名)导⼊指定数据库,相当于导⼊⼀张表的整个数据。
导⼊之前需要检查是否存在同名的表,导⼊的数据表以“$”结尾就是为了避免表重复,以作区分。
下⾯就来看看具体操作步骤。
1. 1 打开SQL Server Management Studio,按图中的路径进⼊导⼊数据界⾯。
2. 2 导⼊的时候需要将EXCEL的⽂件准备好,不能打开。
点击下⼀步。
3. 数据源:选择“Microsoft Excel”除了EXCEL类型的数据,SQL还⽀持很多其它数据源类型。
4. 选择需要导⼊的EXCEL⽂件。
点击浏览,找到导⼊的⽂件确定。
5. 再次确认⽂件路径没有问题,点击下⼀步。
6. 默认为是使⽤的WINODWS⾝份验证,改为使⽤SQL⾝份验证。
输⼊数据库密码,注意:数据库,这⾥看看是不是导⼊的数据库。
也可以在这⾥临时改变,选择其它数据库。
7. 选择导⼊数据EXCEL表内容范围,若有⼏个SHEET表,或⼀个SHEET表中有些数据我们不想导⼊,则可以编写查询指定的数据进⾏导⼊。
点击下⼀步。
8. 选择我们需要导⼊的SHEET表,⽐如我在这⾥将SHEET表名改为price,则导⼊后⽣⾯的SQL数据库表为price$。
点击进⼊下⼀步。
9. 点击进⼊下⼀步。
10. 在这⾥完整显⽰了我们的导⼊的信息,执⾏内容,再次确认⽆误后,点击完成,开始执⾏。
11. 可以看到任务执⾏的过程和进度。
12. 执⾏成功:我们可以看看执⾏结果,已传输1754⾏,表⽰从EXCEL表中导⼊1754条数据,包括列名标题。
这样就完成了,执⾏SQL查询语句:SELECT * FROM price$就可以查看已导⼊的数据内容。
(MS SQL Server)SQL语句导入导出大全选择自lchzh的 Blog(MS SQL Server)SQL语句导入导出大全SQL语句导入导出大全/******* 导出到excelEXEC master..xp_cmdshell ’bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""’/*********** 导入ExcelSELECT *FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’,’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactionsSELECT cast(cast(科目编号as numeric(10,2)) as nvarchar(255))+’’ 转换后的别名FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’,’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions/** 导入文本文件EXEC master..xp_cmdshell ’bcp "dbname..tablename" in c:\DT.txt -c -Sservername -Usa -Ppassword’/** 导出文本文件EXEC master..xp_cmdshell ’bcp "dbname..tablename" out c:\DT.txt -c -Sservername -Usa -Ppassword’ 或EXEC master..xp_cmdshell ’bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword’导出到TXT文本,用逗号分开exec master..xp_cmdshell ’bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password’BULK INSERT 库名..表名FROM ’c:\test.txt’WITH (FIELDTERMINATOR = ’;’,ROWTERMINATOR = ’\n’)--/* dBase IV文件select * fromOPENROWSET(’MICROSOFT.JET.OLEDB.4.0’,’dBase IV;HDR=NO;IMEX=2;DATABASE=C:\’,’select * from [客户资料4.dbf]’) --*/--/* dBase III文件select * fromOPENROWSET(’MICROSOFT.JET.OLEDB.4.0’,’dBase III;HDR=NO;IMEX=2;DATABASE=C:\’,’select * from [客户资料3.dbf]’) --*/--/* FoxPro 数据库select * from openrowset(’MSDASQL’,’Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\’,’select * from [aa.DBF]’)--*//**************导入DBF文件****************/select * from openrowset(’MSDASQL’,’Driver=Microsoft Visual FoxPro Driver;SourceDB=e:\VFP98\data;SourceType=DBF’,’select * from customer where country != "USA" order by country’)go/***************** 导出到DBF ***************/如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句insert into openrowset(’MSDASQL’,’Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\’,’select * from [aa.DBF]’)select * from 表说明:SourceDB=c:\ 指定foxpro表所在的文件夹aa.DBF 指定foxpro表的文件名./*************导出到Access********************/insert into openrowset(’Microsoft.Jet.OLEDB.4.0’,’x:\A.mdb’;’admin’;’’,A表) select * from 数据库名..B表/*************导入Access********************/insert into B表selet * from openrowset(’Microsoft.Jet.OLEDB.4.0’,’x:\A.mdb’;’admin’;’’,A表)********************* 导入 xml文件DECLARE @idoc intDECLARE @doc varchar(1000)--sample XML documentSET @doc =’<root><Customer cid= "C1" name="Janine" city="Issaquah"><Order oid="O1" date="1/20/1996" amount="3.5" /><Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied</Order></Customer><Customer cid="C2" name="Ursula" city="Oelde" ><Order oid="O3" date="7/14/1999" amount="100" note="Wrap it bluewhite red"><Urgency>Important</Urgency>Happy Customer.</Order><Order oid="O4" date="1/20/1996" amount="10000"/></Customer></root>’-- Create an internal representation of the XML document.EXEC sp_xml_preparedocument @idoc OUTPUT, @doc-- Execute a SELECT statement using OPENXML rowset provider.SELECT *FROM OPENXML (@idoc, ’/root/Customer/Order’, 1)WITH (oid char(5),amount float,comment ntext ’text()’)EXEC sp_xml_removedocument @idoc/********************导整个数据库*********************************************/ 用bcp实现的存储过程/*实现数据导入/导出的存储过程根据不同的参数,可以实现导入/导出整个数据库/单个表调用示例:--导出调用示例----导出单个表exec file2table ’zj’,’’,’’,’xzkh_sa..地区资料’,’c:\zj.txt’,1----导出整个数据库exec file2table ’zj’,’’,’’,’xzkh_sa’,’C:\docman’,1--导入调用示例----导入单个表exec file2table ’zj’,’’,’’,’xzkh_sa..地区资料’,’c:\zj.txt’,0----导入整个数据库exec file2table ’zj’,’’,’’,’xzkh_sa’,’C:\docman’,0*/if exists(select 1 from sysobjects where name=’File2Table’ and objectproperty(id,’IsProcedure’)=1)drop procedure File2Tablegocreate procedure File2Table@servername varchar(200) --服务器名,@username varchar(200) --用户名,如果用NT验证方式,则为空’’,@password varchar(200) --密码,@tbname varchar(500) --数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表,@filename varchar(1000) --导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt,@isout bit --1为导出,0为导入asdeclare @sql varchar(8000)if @tbname like ’%.%.%’ --如果指定了表名,则直接导出单个表beginset @sql=’bcp ’+@tbname+case when @isout=1 then ’ out ’ else ’ in ’ end+’ "’+@filename+’" /w’+’ /S ’+@servername+case when isnull(@username,’’)=’’ then ’’ else ’ /U ’+@username end+’ /P ’+isnull(@password,’’)exec master..xp_cmdshell @sqlendelsebegin --导出整个数据库,定义游标,取出所有的用户表declare @m_tbname varchar(250)if right(@filename,1)<>’\’ set @filename=@filename+’\’set @m_tbname=’declare #tb cursor for select name from ’+@tbname+’..sysobjects where xtype=’’U’’’ exec(@m_tbname)open #tbfetch next from #tb into @m_tbnamewhile @@fetch_status=0beginset @sql=’bcp ’+@tbname+’..’+@m_tbname+case when @isout=1 then ’ out ’ else ’ in ’ end+’ "’+@filename+@m_tbname+’.txt " /w’+’ /S ’+@servername+case when isnull(@username,’’)=’’ then ’’ else ’ /U ’+@username end+’ /P ’+isnull(@password,’’)exec master..xp_cmdshell @sqlfetch next from #tb into @m_tbnameendclose #tbdeallocate #tbendgo/**********************Excel导到Txt****************************************/ 想用select * into opendatasource(...) from opendatasource(...)实现将一个Excel文件内容导入到一个文本文件假设Excel中有两列,第一列为姓名,第二列为很行帐号(16位)且银行帐号导出到文本文件后分两部分,前8位和后8位分开。
关于向SQLServer导⼊Excel出错的统⼀解决⽅法导⼊前请先关闭本地⽂件,解除占⽤。
截断——长度或类型不匹配(右键单元格格式)凡是提⽰报错中带有"截断"等字样,注意看⼀下⾥⾯提⽰的列是哪个。
⽐如F4是第四列,点击back回到编辑映射那⾥,点预览看⼀下格式是否不匹配。
这⾥主要原因在Excel⽅,有的Excel的数据长度不像表⾯上那样,最好的办法直接设定长⼀点的char类,或者直接nvarchar变长就好。
另外右键设置单元格格式看⼀下是什么类型的。
通常都是长度和类型的原因,报错信息给我们最直接的反馈就是哪⼀列出了问题,从这两个⾓度⼊⼿很好解决的。
解决后最好关掉导⼊向导重新来⼀遍,否则可能会出现因⽂件占⽤出现的报错。
约束——主键重复或Excel有空⾏凡是提⽰如下内容:消息错误 0xc0202009: 数据流任务 1: SSIS 错误代码 DTS_E_OLEDBERROR。
出现 OLE DB 错误。
错误代码: 0x80004005。
已获得 OLE DB 记录。
源:“Microsoft SQL Server Native Client 10.0” Hresult: 0x80004005 说明:“未指定的错误”。
(SQL Server 导⼊和导出向导)错误 0xc020901c: 数据流任务 1: 输⼊“Destination Input”(60) 上的输⼊列“studentId”(127) 出错。
返回的列状态是:“该值违反了该列的完整性约束。
”。
(SQL Server 导⼊和导出向导)错误 0xc0209029: 数据流任务 1: SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。
“输⼊“Destination Input”(60)”失败,错误代码为 0xC020907D,⽽且针对“输⼊“Destination Input”((SQL Server 导⼊和导出向导)错误 0xc0047022: 数据流任务 1: SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。
数据导入与导出Excel中的外部数据连接技巧在处理大量数据时,Excel是一个非常强大的工具。
在Excel中,我们可以通过导入和导出外部数据来快速获取和整理数据。
本文将介绍一些数据导入与导出的技巧,帮助读者更好地利用Excel中的外部数据连接。
一、导入外部数据1. 打开Excel并新建一个工作表。
2. 点击“数据”选项卡,在“获取外部数据”组中选择“从其他来源”。
3. 在下拉菜单中选择合适的数据源,如“从文本文件”、“从Web”、“从SQL Server”等。
4. 根据数据源类型,按照相应的步骤进行配置和连接。
5. 选择要导入的数据,可以是整个文件,也可以是特定的表或查询结果。
6. 点击“导入”按钮,确认导入选项后,Excel将开始导入数据。
7. 根据需要可以对导入的数据进行一些处理和格式化。
二、导出外部数据1. 打开一个包含需要导出的数据的Excel工作簿。
2. 选择需要导出的数据区域。
3. 点击“文件”选项卡,在下拉菜单中选择“另存为”。
4. 在弹出的保存对话框中选择导出的目标文件类型,如CSV、文本文件、Access数据库等。
5. 根据文件类型的不同,进行相应的设置和配置,如选择字段分隔符、文本编码等。
6. 确认导出选项后,选择保存的路径和文件名。
7. 点击“保存”按钮,Excel将开始导出数据到所选的文件类型。
三、外部数据连接技巧1. 更新连接:在Excel中导入的外部数据连接是可以更新的。
在“数据”选项卡的“连接”组中,可以选择“刷新”按钮来更新连接的数据。
还可以设置刷新的时间间隔,实现自动刷新。
2. 数据筛选:导入外部数据后,可以使用Excel的数据筛选功能对数据进行筛选和排序,从而得到我们需要的结果。
3. 条件格式:利用条件格式能够根据自定义的规则对数据进行着色,帮助我们更好地理解和分析大量数据。
4. 公式计算:在Excel的导入数据中,可以使用各种公式和函数对数据进行计算和分析,从而得出更有意义的结果。
sql server 数据导出sql语句如何使用SQL Server导出数据导出数据是数据库管理中常用的操作之一,SQL Server提供了多种方法来导出数据,例如使用SQL Server Management Studio(SSMS)或使用T-SQL语句。
本文将逐步介绍如何使用SQL Server导出数据,并提供一些常见的实例。
第一步:使用SQL Server Management Studio(SSMS)导出数据SQL Server Management Studio(SSMS)是SQL Server的官方管理工具,它提供了图形用户界面(GUI)以操作数据库。
以下是使用SSMS导出数据的步骤:1. 打开SQL Server Management Studio并连接到目标数据库。
2. 在“对象资源管理器”窗口中选择要导出数据的数据库和数据表。
3. 在“对象资源管理器”窗口右键单击选择“任务”>“导出数据”。
这将打开“导出向导”。
4. 在“导出向导”中,选择“SQL Server Native Client 11.0”(或适用于您的SQL Server版本)作为目标数据源。
5. 选择目标文件类型,例如Microsoft Excel或CSV文件。
6. 配置目标文件的保存路径和名称。
7. 选择要导出的数据表和列。
8. 配置导出选项,例如选择是否包括表头或指定导出数据的条件。
9. 完成导出设置后,点击“下一步”然后“完成”来开始导出数据。
第二步:使用T-SQL语句导出数据如果你更喜欢使用命令行或脚本方式来操作数据库,你可以使用T-SQL语句来导出数据。
以下是使用T-SQL语句导出数据的步骤:1. 打开SQL Server Management Studio并连接到目标数据库。
2. 打开一个新的查询窗口。
3. 编写一个SELECT语句来选择要导出的数据。
例如,SELECT * FROM 表名。
4. 如果需要对数据进行筛选,可以在SELECT语句中加入WHERE子句来添加条件。
sqlserver导⼊导出待写excel 导⼊数字⽇期等导⼊为⽂本,在excel设置类型为⽂本再导⼊即可。
Excel数字、⽂本混合列导⼊SQL Server出现的问题&解决办法Excel⽂件:序号姓名内部电话住址1⼩李1234……2⼩王5678……3⼩张2345(国内长途)…………………………如上结构的Excel⽂件,⽤SQL Server的“导⼊数据”功能来将其导⼊SQL数据库中。
结果发现在“内部电话”列中,所有带有⽂字的电话号,被导⼊后字段值全部为NULLSQL数据表:序号姓名内部电话住址1⼩李1234……2⼩王5678……3⼩张NULL…………………………通过在SQL中设置(在导⼊导出中,⽬的⽅选择新建表),发现数据库默认将“内部电话”列识别为float型,因为其新建表对应字段就是float 类型的。
看来是SQL认为包含⽂字的那些电话号码⽆法转换成数字,所以是⽆效的数据,从⽽采⽤NULL来代替。
通过查询微软⽹站,发现MS⼤意如是说:SQL在导⼊Excel混合数据列的时候,由于数据类型不唯⼀,导致SQL⽆法确定数据类型(看来SQL也有犯糊涂的时候)。
SQL的应对之道就是统计该数据列的前8⾏数据中出现最多的类型,并以此类型做为默认类型。
⽽在我的Excel ⽂件中,“内部电话”列的前8⾏中的确要数纯数字格式的电话号码最多,所以SQL就把这列认为是float型的(为什么不是int型?不解)。
⾄于此列其它格式的数据,SQL的办法是——直接扔了(汗⼀个。
)MS原⽂:……Excel 不会像关系数据库那样为 ADO 提供有关其数据的详细架构信息。
因此,驱动程序必须⾄少扫描⼏⾏现有数据,才能有根据地猜测各列的数据类型。
“要扫描的⾏数”的默认值为⼋ (8) ⾏。
可以指定从⼀ (1) ⾏到⼗六 (16) ⾏的整数值,或指定零 (0),扫描所有现有⾏。
这可通过向连接字符串添加可选的 MaxScanRows= 设置,或在 DSN 配置对话框中更改要扫描的⾏数设置来完成。
Excel中的数据导入和导出方法详解Excel是一款功能强大的电子表格软件,广泛应用于各行各业。
在日常工作中,我们经常需要将数据导入到Excel中进行处理和分析,或者将Excel中的数据导出到其他软件或文件中。
本文将详细介绍Excel中的数据导入和导出方法,帮助读者更好地应用Excel。
一、数据导入方法1. 从文本文件导入数据Excel支持从各种文本文件中导入数据,如CSV、TXT等。
首先,打开Excel并选择“数据”选项卡,然后点击“从文本”按钮。
接下来,选择要导入的文本文件,并按照导入向导的指示进行操作。
可以选择分隔符、数据格式等选项,最后点击“完成”即可将文本文件中的数据导入到Excel中。
2. 从数据库导入数据如果需要从数据库中导入数据,可以使用Excel提供的“数据连接向导”。
首先,选择“数据”选项卡,然后点击“从其他来源”按钮,选择“从SQL Server”或其他数据库选项。
接下来,按照向导的指示填写数据库连接信息,并选择要导入的表或查询。
最后,点击“完成”即可将数据库中的数据导入到Excel中。
3. 从Web页面导入数据有时候,我们需要从Web页面中获取数据并导入到Excel中进行处理。
Excel提供了“从Web”功能,可以直接从Web页面导入数据。
在“数据”选项卡中,点击“从Web”按钮,然后输入要导入的Web页面的URL。
Excel会自动解析页面,并显示可供导入的数据表格。
选择需要导入的表格,点击“导入”即可将Web页面中的数据导入到Excel中。
二、数据导出方法1. 导出为文本文件如果需要将Excel中的数据导出为文本文件,可以选择“文件”选项卡,然后点击“另存为”按钮。
在保存类型中选择“CSV(逗号分隔)”或“TXT(文本文件)”,然后点击“保存”。
Excel会将当前工作表中的数据保存为文本文件,并根据选择的格式进行分隔。
2. 导出为PDF文件有时候,我们需要将Excel中的数据导出为PDF文件,以便与他人共享或打印。
从SQL Server中导入/导出Excel的基本方法 www.jz123.cn 2008-08-07 来源: 中国建站 乐乐整理 我要投递新闻
.从sql server中导入/导出 excel 的基本方法
/*=========== 导入/导出 excel 的基本方法 ===========*/ 从excel文档中,导入数据到sql数据库中,很简单,直接用下面的语句: /*=============================================*/ --假如接受数据导入的表已存在 insert into 表 select * from openrowset(microsoft.jet.oledb.4.0 ,excel 5.0;hdr=yes;database=c:test.xls,sheet1$)
--假如导入数据并生成表 select * into 表 from openrowset(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文档的工作表名,一般要加上$才能正常使用. --*/ --上面已说过,用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] go
create proc p_exporttb @tbname sysname, --要导出的表名 @path nvarchar(1000), --文档存放目录 @fname nvarchar(250)= --文档名,默认为表名 as 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=@tbname+.xls
--检查文档是否已存在 if right(@path,1)<> set @path=@path+ create table #tb(a bit,b bit,c bit) set @sql=@path+@fname insert into #tb exec master..xp_fileexist @sql
--数据库创建语句 set @sql=@path+@fname if 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 out if @err<>0 goto lberr
exec @err=sp_oamethod @obj,open,null,@constr if @err<>0 goto lberr
/*--假如覆盖已存在的表,就加上下面的语句 --创建之前先删除表/假如存在的话 select @sql=drop table [+@tbname+] exec @err=sp_oamethod @obj,execute,@out out,@sql --*/
--创建表的sql select @sql=,@fdlist= select @fdlist=@fdlist+,[+a.name+] ,@sql=@sql+,[+a.name+] +case when b.name in(char,nchar,varchar,nvarchar) then text(+cast(case when a.length>255 then 255 else a.length end as varchar)+) when b.name in(tynyint,int,bigint,tinyint) then int when b.name in(smalldatetime,datetime) then datetime when b.name in(money,smallmoney) then money else b.name end from syscolumns a left join systypes b on a.xtype=b.xusertype where b.name not in(image,text,uniqueidentifier,sql_variant,ntext,varbinary,binary,timestamp) and object_id(@tbname)=id select @sql=create table [+@tbname +](+substring(@sql,2,8000)+) ,@fdlist=substring(@fdlist,2,8000) exec @err=sp_oamethod @obj,execute,@out out,@sql if @err<>0 goto lberr
exec @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) return lberr: exec sp_oageterrorinfo 0,@src out,@desc out lbexit: select cast(@err as varbinary(4)) as 错误号 ,@src as 错误源,@desc as 错误描述 select @sql,@constr,@fdlist go --上面是导表的,下面是导查询语句的.
/*--数据导出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] go
create proc p_exporttb @sqlstr varchar(8000), --查询语句,假如查询语句中使用了order by ,请加上top 100 percent @path nvarchar(1000), --文档存放目录 @fname nvarchar(250), --文档名 @sheetname varchar(250)= --要创建的工作表名,默认为文档名 as 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.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+@fname