如何把多个查询的结果自动导出到excel的不同sheet中?

yiyiwenwen1211 2014-03-19 10:57:09


declare @sql varchar(5000)
declare @table1 varchar(20)
declare @table2 varchar(20)

set @table1 = 't123'
set @table2 = 't456'

set @sql='select * from '+@table1+''
exec @sql

set @sql='select * from '+@table2+''
exec @sql



这样就能得到两个表的数据,我想把查询到的这两个表的数据导出到一个名叫"excel1.xls"的文件中,其中有两个工作表,分别把这两个查询得到的数据分别放到这两个sheet中,请问该如何编写这样的数据导出的代码?谢谢
...全文
2104 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2014-03-20
  • 打赏
  • 举报
回复
引用 12 楼 brownhwy 的回复:
我的是Sql2005,不存在Date类型。
我那个DATE类型是因为业务需求拼接而已,你可以不用拼接日期上去或者用其他方法转换,比如converted(varchar(10) ,getdate(),121)也可以实现convert(date,getdate())的效果
發糞塗牆 2014-03-20
  • 打赏
  • 举报
回复
sp_configure 'show advanced options',1
go
reconfigure 
go 
sp_configure 'xp_cmdshell',1
go
reconfigure 
go
brownhwy 2014-03-20
  • 打赏
  • 举报
回复
我的是Sql2005,不存在Date类型。
brownhwy 2014-03-20
  • 打赏
  • 举报
回复
在 sp_configure 'xp_cmdshell',1 报错 消息 15123,级别 16,状态 1,过程 sp_configure,第 51 行 配置选项 'xp_cmdshell' 不存在,也可能是高级选项。
brownhwy 2014-03-20
  • 打赏
  • 举报
回复
引用 8 楼 DBA_Huangzj 的回复:
有些地方我已经写了注释,你对应改一下吧,应该不难....睡觉了,不行的话引用回复,我明天再看,可以的话记得结贴... 第一步,开启需要的配置项:
sp_configure 'show advance',1
go
reconfigure 
go 
sp_configure 'xp_cmdshell',1
go
reconfigure 
go
第二步:把你要导出的数据集导出到CSV,CSV和excel是可以互转的:
use xxx
go

if OBJECT_ID('temtable','u')is not null
drop table temtable

select * into temtable from (select 'applicationID'as [applicationID],'Category'  as [Category] --这一步是为了生成列名,根据你的数据的列名明确指定
union all 
select CONVERT(varchar(20),[applicationID]), [Category] from  #temtable)a--这部分就是要导出的数据
declare @filename nvarchar(30)
--下面是生成文件名
select @filename='Report'+right(replace(convert(date,GETDATE()),'-',''),2)+substring(replace(convert(date,GETDATE()),'-',''),5,2)+substring(replace(convert(date,GETDATE()),'-',''),1,4)+'.csv'
------------------------------------------
--配置BCP命令
declare @strSQL nvarchar(1024)
set @strSQL='bcp "SELECT applicationID,Category FROM 某某库.dbo.temtable" queryout C:\Temp\DBA_date\'+@filename+' -c -T -t","'
print @strSQL
EXEC master..xp_cmdshell @strSQL
朋友,我在reconfigure 时 报这样的错 消息 5808,级别 16,状态 1,第 1 行 不支持对系统目录进行即席更新。
KevinLiu 2014-03-20
  • 打赏
  • 举报
回复
用SSIS试试看,用参数应该可以导入到不同的Sheet。
發糞塗牆 2014-03-20
  • 打赏
  • 举报
回复
额,2005可能要从外围配置管理器那里开,你网上找找,我现在在外面手机上的
brownhwy 2014-03-20
  • 打赏
  • 举报
回复
引用 13 楼 DBA_Huangzj 的回复:
sp_configure 'show advanced options',1
go
reconfigure 
go 
sp_configure 'xp_cmdshell',1
go
reconfigure 
go
版主 我还是报那两个错 我在reconfigure 时 报这样的错 消息 5808,级别 16,状态 1,第 1 行 不支持对系统目录进行即席更新。 在 sp_configure 'xp_cmdshell',1 时报 消息 15123,级别 16,状态 1,过程 sp_configure,第 51 行 配置选项 'xp_cmdshell' 不存在,也可能是高级选项。 是否Sql2005不支持这个命令?
xxfvba 2014-03-20
  • 打赏
  • 举报
回复
我觉得用Excel的VBA吧,那就很简单了。 我收藏Huang版主写的东东了,谢谢
發糞塗牆 2014-03-19
  • 打赏
  • 举报
回复
有些地方我已经写了注释,你对应改一下吧,应该不难....睡觉了,不行的话引用回复,我明天再看,可以的话记得结贴... 第一步,开启需要的配置项:
sp_configure 'show advance',1
go
reconfigure 
go 
sp_configure 'xp_cmdshell',1
go
reconfigure 
go
第二步:把你要导出的数据集导出到CSV,CSV和excel是可以互转的:
use xxx
go

if OBJECT_ID('temtable','u')is not null
drop table temtable

select * into temtable from (select 'applicationID'as [applicationID],'Category'  as [Category] --这一步是为了生成列名,根据你的数据的列名明确指定
union all 
select CONVERT(varchar(20),[applicationID]), [Category] from  #temtable)a--这部分就是要导出的数据
declare @filename nvarchar(30)
--下面是生成文件名
select @filename='Report'+right(replace(convert(date,GETDATE()),'-',''),2)+substring(replace(convert(date,GETDATE()),'-',''),5,2)+substring(replace(convert(date,GETDATE()),'-',''),1,4)+'.csv'
------------------------------------------
--配置BCP命令
declare @strSQL nvarchar(1024)
set @strSQL='bcp "SELECT applicationID,Category FROM 某某库.dbo.temtable" queryout C:\Temp\DBA_date\'+@filename+' -c -T -t","'
print @strSQL
EXEC master..xp_cmdshell @strSQL
發糞塗牆 2014-03-19
  • 打赏
  • 举报
回复
等等,我上服务器拿脚本
yiyiwenwen1211 2014-03-19
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
合并需要用其他语言或者命令,SQL做不到
我手动合并,现在只需要如何将一个查询的结果带标题行导出到excel中 谢谢
發糞塗牆 2014-03-19
  • 打赏
  • 举报
回复
合并需要用其他语言或者命令,SQL做不到
yiyiwenwen1211 2014-03-19
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
导出excel加标题不难,但是多个sheet就有点难度了
那查询一次导出一次,然后我再把多个excel手动合并,这样的代码如何写?请指教,谢谢
發糞塗牆 2014-03-19
  • 打赏
  • 举报
回复
导出excel加标题不难,但是多个sheet就有点难度了
yiyiwenwen1211 2014-03-19
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
我以前是用excel的宏命令拆过多个sheet成多个excel文件,不过合并没搞过,纯SQL貌似更加不能实现
因为查询到的结果如果单纯复制粘贴的话是不包含标题行的,所以复制到excel以后必须手动添加标题行和更改sheet的名称,有点麻烦,这样说的话看来就不能省事了?呵呵
發糞塗牆 2014-03-19
  • 打赏
  • 举报
回复
我以前是用excel的宏命令拆过多个sheet成多个excel文件,不过合并没搞过,纯SQL貌似更加不能实现

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧