找了很多的方法,都基本可以实现vb下将sql中的表导入到excel的功能。但是都存在一些不足,记录如下:
1,bcp
Shell "command.com /c bcp test.dbo.ziliao out e:/ziliao1.xls -T -c",在vb中只要用这一句简单的语句就可以把大批量的数据从sql中导入到excel文件中。方法很简单,但是其生成的文件虽然是以xls结尾,用excel也能打开,但其实它的文件结构是文本。还有这只能导出数据,不能导出列名,不能形成完整的表结构。
2,DTS包
用sql自带的数据导出工具,一步一步按照提示走,在最后选择生成一个vb的bas包。通过这个包你可以了解数据导出的具体实现过程,把它加入到工程里面就可以实现对数据的导出。其不方便的地方在于一张表对应一个包,当要导出的表变化后,包也要变化。这样要为每一张表建一个包,在建个工程,很繁琐。
3,调用存储过程
在csnd找到了一个存储过程,如下
*******************************************************************************************************************
/*--数据导出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, N'IsProcedure') = 1)
drop procedure [dbo].[p_exporttb]
GO
create proc p_exporttb
@sqlstr sysname,--查询语句,如果查询语句中使用了order by ,请加上top 100 percent,注意,如果导出表/视图,用上面的存储过程
@path nvarchar(1000),
1,bcp
Shell "command.com /c bcp test.dbo.ziliao out e:/ziliao1.xls -T -c",在vb中只要用这一句简单的语句就可以把大批量的数据从sql中导入到excel文件中。方法很简单,但是其生成的文件虽然是以xls结尾,用excel也能打开,但其实它的文件结构是文本。还有这只能导出数据,不能导出列名,不能形成完整的表结构。
2,DTS包
用sql自带的数据导出工具,一步一步按照提示走,在最后选择生成一个vb的bas包。通过这个包你可以了解数据导出的具体实现过程,把它加入到工程里面就可以实现对数据的导出。其不方便的地方在于一张表对应一个包,当要导出的表变化后,包也要变化。这样要为每一张表建一个包,在建个工程,很繁琐。
3,调用存储过程
在csnd找到了一个存储过程,如下
*******************************************************************************************************************
/*--数据导出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, N'IsProcedure') = 1)
drop procedure [dbo].[p_exporttb]
GO
create proc p_exporttb
@sqlstr sysname,--查询语句,如果查询语句中使用了order by ,请加上top 100 percent,注意,如果导出表/视图,用上面的存储过程
@path nvarchar(1000),