方法1-DTS方法:
1、在SQL服务器上,新建一个DTS包(使用SQL的“导出数据”向导创建一个DTS)取名为 outputvpart
2、在SQL服务器上,新建一个存储过程,取名WriteToExcel,完整代码如下:
CREATE PROCEDURE WriteToExcel
AS
exec master..xp_cmdshell ' dtsrun -N"outputvpart" -S"PPLOVEQQ\PPDATABASE" -U"sa" -P"" '
GO
3、在VB.NET(或在SQL查询分析器)中执行此存储过程就可以导出成EXCEL文件(在SQL中执行存储过程的语句:EXEC writetoexcel)
4、再次执行时需要删除上次执行时创建的EXCEL文件。
此方法的最大的优点是导出速度快,格式完整(有标题),缺点是比较死板,对于一些固定的导出工作比较适合(因为所有的参数,如:被导
的表名、字段、生成的excel文件名、存储路径等信息都封存在DTS包中,所以一旦建立一个DTS包后,一切参数就固定了;而且还有一个缺点是
,不能覆盖上次导出产生的文件,第二次导出前必须删除或重命名第一次导出产生的文件。VB.NET是否能够对DTS进行编程实现参数化导出,
有待继续研究。)
方法2-BCP方法:(不推荐)
EXEC master..xp_cmdshell 'bcp "SELECT Topcodecol, Soncodecol FROM Test002.dbo.TopSonRelation" queryout c:\t1.xls -c -S"PPLOVEQQ\PPDATABASE" -U"sa" -P""'
或
EXEC master..xp_cmdshell 'bcp Test002.dbo.vpart out c:\temp1.xls -c -q -S"PPLOVEQQ\PPDATABASE" -U"sa" -P""'
此方法可以导出,但有时候是乱码(将一行数据切割成了两行),网上的资料显示,执行此语句前要见好表及表中的字段,但是我经过测试,
在字段比较少的时候,还好用,但是当字段较多时,不好用(乱码)。此方法实际就是导出带分割符号的文本,而且不导出字段行。