请教数据导出问题--从SQL SERVER 2008导出到excel表,是真正的excel表

时间:2022-02-09 01:28:29
最近在弄一些数据,想从SQL SERVER 2008中导出一个表到excel中,用sql语句实现,并且导出的excel是真正的excel表。
采用下面的也可以存储到excel表中,但是打开表时,提示说“打开文件格式与扩展名格式不一致”
exec master..xp_cmdshell 'bcp dks921.dbo."926-1min集成" out e:\bottleneck\data\沪太-南北高架\完全新数据\9.27\44_1min-2.xlsx -c -q -S"ADMINISTRATOR" -T'

请问,各位高手有什么好的解决方法?

17 个解决方案

#1


你导入的2003还是 2007?

#2


我想导出成2003的,电脑上装的是2007的。
exec master..xp_cmdshell 'bcp dks921.dbo."926-1min集成" out e:\bottleneck\data\沪太-南北高架\完全新数据\9.27\44_1min-2.xls -c -q -S"ADMINISTRATOR" -T'

#3


用链接服务器导出吧.或者干脆用导入导出向导去导.

#4


因为数据量挺大的,是重复性工作,如果用导入导出向导的话太费时间了,还是谢谢你啦

#5


引用 3 楼 qianjin036a 的回复:
用链接服务器导出吧.或者干脆用导入导出向导去导.

用链接服务器:
exec sp_addlinkedserver 'sample','EXCEL','Microsoft.Jet.OLEDB.4.0','e:\tb.xls','','EXCEL 8.0','sheet1'
go
insert into sample...[sheet1$](code,stym,enym) select * from tb
go
exec sp_dropserver 'sample','droplogins'

或者用分布式查询都可以.

#6


xlsx--是2007?

數據量用 xls

#7


xlsx是2007的后缀名吧

#8


在企業管理里導出
選擇這個引擎就行了,曾試過可行 
Microsoft Office 12.0 Access Database Engine OLE DB Provider

#11


引用 8 楼 roy_88 的回复:
在企業管理里導出
選擇這個引擎就行了,曾試過可行 
Microsoft Office 12.0 Access Database Engine OLE DB Provider


我是想用代码实现,每次将符合我要求的数据导出到excel,用导出引擎有点慢,谢谢呀

#12


引用 9 楼 roy_88 的回复:
參照:
http://database.ctocio.com.cn/tips/308/8250808.shtml

我是想用代码实现,每次将符合我要求的数据导出到excel,用导出引擎有点慢,谢谢呀

#13


引用 10 楼 roy_88 的回复:
看一下
http://shuikanshui.blog.163.com/blog/static/14823642011910102710127/


我是想用代码实现,每次将符合我要求的数据导出到excel,用导出引擎有点慢,谢谢呀

#14


我建议你写个代码什么的。 下面链接有我写的 VB.NET去获取表里的数据的代码,引用这个DLL然后就可以了哈,或者你不会我写个给你就好。http://www.oschina.net/question/106014_13103。
或者你不习惯这样,你还可以再OFFICE2007里面去直接引用你要的数据,每次直接刷新下EXCEL 就可以了。

#15


引用 2 楼 zhangjuanhaoren 的回复:
我想导出成2003的,电脑上装的是2007的。
exec master..xp_cmdshell 'bcp dks921.dbo."926-1min集成" out e:\bottleneck\data\沪太-南北高架\完全新数据\9.27\44_1min-2.xls -c -q -S"ADMINISTRATOR" -T'


在路徑下創建一個同名的Excel試試

#16


9樓方法曾測試過是可以的
你直接導出為xlsx文件格式

不行時,在路徑下創建一個同名xlsx文件就行了

#17


引用 16 楼 roy_88 的回复:
9樓方法曾測試過是可以的
你直接導出為xlsx文件格式

不行時,在路徑下創建一個同名xlsx文件就行了



我想用代码实现,用导入导出工具有点慢,因为我希望每次运行完都生成一个按照我的规则定义的名字的excel表

#1


你导入的2003还是 2007?

#2


我想导出成2003的,电脑上装的是2007的。
exec master..xp_cmdshell 'bcp dks921.dbo."926-1min集成" out e:\bottleneck\data\沪太-南北高架\完全新数据\9.27\44_1min-2.xls -c -q -S"ADMINISTRATOR" -T'

#3


用链接服务器导出吧.或者干脆用导入导出向导去导.

#4


因为数据量挺大的,是重复性工作,如果用导入导出向导的话太费时间了,还是谢谢你啦

#5


引用 3 楼 qianjin036a 的回复:
用链接服务器导出吧.或者干脆用导入导出向导去导.

用链接服务器:
exec sp_addlinkedserver 'sample','EXCEL','Microsoft.Jet.OLEDB.4.0','e:\tb.xls','','EXCEL 8.0','sheet1'
go
insert into sample...[sheet1$](code,stym,enym) select * from tb
go
exec sp_dropserver 'sample','droplogins'

或者用分布式查询都可以.

#6


xlsx--是2007?

數據量用 xls

#7


xlsx是2007的后缀名吧

#8


在企業管理里導出
選擇這個引擎就行了,曾試過可行 
Microsoft Office 12.0 Access Database Engine OLE DB Provider

#9


#10


#11


引用 8 楼 roy_88 的回复:
在企業管理里導出
選擇這個引擎就行了,曾試過可行 
Microsoft Office 12.0 Access Database Engine OLE DB Provider


我是想用代码实现,每次将符合我要求的数据导出到excel,用导出引擎有点慢,谢谢呀

#12


引用 9 楼 roy_88 的回复:
參照:
http://database.ctocio.com.cn/tips/308/8250808.shtml

我是想用代码实现,每次将符合我要求的数据导出到excel,用导出引擎有点慢,谢谢呀

#13


引用 10 楼 roy_88 的回复:
看一下
http://shuikanshui.blog.163.com/blog/static/14823642011910102710127/


我是想用代码实现,每次将符合我要求的数据导出到excel,用导出引擎有点慢,谢谢呀

#14


我建议你写个代码什么的。 下面链接有我写的 VB.NET去获取表里的数据的代码,引用这个DLL然后就可以了哈,或者你不会我写个给你就好。http://www.oschina.net/question/106014_13103。
或者你不习惯这样,你还可以再OFFICE2007里面去直接引用你要的数据,每次直接刷新下EXCEL 就可以了。

#15


引用 2 楼 zhangjuanhaoren 的回复:
我想导出成2003的,电脑上装的是2007的。
exec master..xp_cmdshell 'bcp dks921.dbo."926-1min集成" out e:\bottleneck\data\沪太-南北高架\完全新数据\9.27\44_1min-2.xls -c -q -S"ADMINISTRATOR" -T'


在路徑下創建一個同名的Excel試試

#16


9樓方法曾測試過是可以的
你直接導出為xlsx文件格式

不行時,在路徑下創建一個同名xlsx文件就行了

#17


引用 16 楼 roy_88 的回复:
9樓方法曾測試過是可以的
你直接導出為xlsx文件格式

不行時,在路徑下創建一個同名xlsx文件就行了



我想用代码实现,用导入导出工具有点慢,因为我希望每次运行完都生成一个按照我的规则定义的名字的excel表