sql选出的数据复制到excel中

finkle_zhang 2010-10-18 03:50:04

比如select * from table
这个时候查询分析界面出现了结果,点击结果左上角的锚点,可以选中所有数据,复制粘贴到excel即可,但是一个问题是字段名称没法复制过去,有什么办法能把字段名称也弄过去啊(字段大概40,50个,让手写加到excel中,会疯的,眼也会花的)

...全文
165 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Mr_Nice 2010-10-18
工具——选项——查询结果——SQL server ——以网格显示结果——在复制和保存结果时保存列标题(勾选即可)
回复
finkle_zhang 2010-10-18
。。。什么命令可以把查询模式改为文本
[Quote=引用 7 楼 sqlcenter 的回复:]

引用 6 楼 finkle_zhang 的回复:

什么命令,我有印象了
引用 4 楼 xuam 的回复:

执行模式选为文本,查处来,copy到EXCEL


Ctrl+T
[/Quote]
回复
SQLCenter 2010-10-18
[Quote=引用 6 楼 finkle_zhang 的回复:]

什么命令,我有印象了
引用 4 楼 xuam 的回复:

执行模式选为文本,查处来,copy到EXCEL
[/Quote]

Ctrl+T
回复
finkle_zhang 2010-10-18
什么命令,我有印象了
[Quote=引用 4 楼 xuam 的回复:]

执行模式选为文本,查处来,copy到EXCEL
[/Quote]
回复
finkle_zhang 2010-10-18
我就是直接复制的,但是只能复制数据,没字段名称
[Quote=引用 2 楼 liuqian4243 的回复:]

直接复制查询结果,

再粘贴到excel表格中即可.


这个最直接,也最快速了.
[/Quote]
回复
xuam 2010-10-18
执行模式选为文本,查处来,copy到EXCEL
回复
SQLCenter 2010-10-18
excel 直接连接数据库查询岂不是更方便快捷
回复
Ny-6000 2010-10-18
直接复制查询结果,

再粘贴到excel表格中即可.


这个最直接,也最快速了.
回复
dawugui 2010-10-18
带字段名导出到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

/*--数据导出Text

导出查询语句中的数据到Text,包含字段名
如果文件不存在,将自动创建文件
基于通用性考虑,仅支持导出标准数据类型
--邹建 2003.10--*/

/*--调用示例

--导出Text
p_exporttb @sqlstr='select * from 地区资料',@path='c:\',@over=1
--*/
create proc p_exporttb
@sqlstr varchar(8000), --要导出的查询语句
@path nvarchar(1000), --文件存放目录
@fname nvarchar(250)='temp.txt',--文件名,默认为temp
@over bit=0 --是否覆盖已经存在的文件,如果不覆盖,则直接追加
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.txt'

--检查文件是否已经存在
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
if exists(select 1 from #tb where a=1)
if @over=1
begin
set @sql='del '+@sql
exec master..xp_cmdshell @sql,no_output
end
else
set @over=0
else
set @over=1

--数据库创建语句
set @sql=@path+@fname
set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Text'
+';HDR=YES;DATABASE='+@path+'"'

--创建表的SQL
declare @tbname sysname
set @tbname='##tmp_'+convert(varchar(38),newid())
set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'
exec(@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

--创建表的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>250 then 250 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 tempdb..syscolumns a left join tempdb..systypes b on a.xtype=b.xusertype
where b.name not in('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')
and a.id=(select id from tempdb..sysobjects where name=@tbname)
select @sql='create table ['+@fname
+']('+substring(@sql,2,8000)+')'
,@fdlist=substring(@fdlist,2,8000)

if @over=1
begin
exec @err=sp_oamethod @obj,'execute',@out out,@sql
if @err<>0 goto lberr
end

exec @err=sp_oadestroy @obj

set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Text;HDR=YES;DATABASE='
+@path+''',''select * from ['+@fname+']'')'

--导入数据
exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from ['+@tbname+']')

set @sql='drop table ['+@tbname+']'
exec(@sql)

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
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-18 03:50
社区公告
暂无公告