EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'

解决方案 »

  1.   

    这是大力写的过程1、建立过程:
    CREATE proc out2xls
    @服务器名 varchar(255),
    @库名 varchar(255),
    @表名 varchar(255),
    @用户名 varchar(100),
    @密码 varchar(100),
    @路径及文件名 varchar(255)
    as
    declare @temp1 nvarchar(4000),@temp2 varchar(8000)set @temp1='select @value1='''',@value2='''' select @value1=@value1+'',''''''+a.name+''''+char(39)+'' [''+a.name+'']'',@value2=@value2+'',cast(''+''[''+a.name+'']''+ '' as varchar(200))'' from '+@库名+'..syscolumns a,'+@库名+'..sysobjects d where a.id=d.id and d.name='''+@表名+''''+' order by a.colorder'
    exec sp_executesql @temp1,N'@value1 nvarchar(4000) output , @value2 varchar(8000) output',@temp1 output,@temp2 outputselect @temp1=right(@temp1,len(@temp1)-1),@temp2=right(@temp2,len(@temp2)-1)exec('select * into '+@库名+'.dbo.中间表 from (select '+ @temp1+' union all SELECT '+@temp2+' FROM '+@库名+'..'+@表名+') tem3')
    set @temp2='bcp '+@库名+'.dbo.中间表 out '+@路径及文件名+' -c -S'+@服务器名+' -U'+@用户名+' -P'+@密码EXEC master..xp_cmdshell @temp2
    exec('drop table '+@库名+'.dbo.中间表')
    GO2、把你的交叉查询导到一个临时表比如:
    declare @sql varchar(8000)
    set @sql = 'select 年份'
    select @sql = @sql + ',sum(case 季度 when '''+cast(季度 as varchar(10))+''' then 数据 else 0 end) as ['+cast(季度 as varchar(10))+'季度数据]'
      from (select distinct 季度 from 有一表) as a
    select @sql = @sql+' into 中间临时表 from 有一表 group by 年份'
    exec(@sql)
    go3、调用过程:
    exec out2xls 'daliserver','pubs','中间临时表','sa','element','c:\a.xls'
      

  2.   

    不必用语句用DTS导入导出,简单方便!!!!
      

  3.   

    exec master.cmdshell 'bcp "SettleDB..shamghu" out "c:\a.xls" /S"GNETDATA/GNETDATA" /U"sa" /P"" /w
      

  4.   

    不过导出的都不是真正的excel文件
      

  5.   

    前台开发工具是什么?如果用PB直接Save As 即可
      

  6.   

    这么简单的问题,直接在 excel 中 做数据库查询!
    excel 中 数据=====》获取数据库数据===》新建数据库查询 
    就可以了
      

  7.   

    如果要用vb 程序实现,就要调用com对象 
    createoleobject('excel.application')了,这样的程序很多 搜索一下
      

  8.   

    EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'
    并不能生成要的文件
      

  9.   

    当然!如果一次性使用,就直接从 excel 中进行查询数据,得到的数据保存为 excel 文件就可以了
    如果反复使用,就写程序,用 com 控件
      

  10.   


    '*************************************************************************
    '**函 数 名:Tb2Excel
    '**输    入: sConcStr  数据库连接字符串
    '**        : sTbName   要导出的表名
    '**        : sFName    excel文件名
    '**功能描述:导出数据库中的指定表到excel文件中
    '**作    者:邹建
    '**日    期:2003年09月10日
    '*************************************************************************
    Sub Tb2Excel(ByVal sConcStr$, ByVal sTbName$, ByVal sFName$)
        Dim iRe As ADODB.Recordset
        Dim iExlApp As Object
        Dim iCol&, iRow&
        
        '打开表
        Set iRe = New ADODB.Recordset
        iRe.CursorLocation = adUseClient
        iRe.Open sTbName, sConcStr, adOpenKeyset, adLockReadOnly
        
        '创建EXCEL对象
        On Error Resume Next
        Set iExlApp = CreateObject("excel.application")
        If Err Or (iExlApp Is Nothing) Then
            Call MsgBox("不能创建Excel对象,请检查是否正确安装了Excel!", vbCritical)
            Exit Sub
        End If
        With iExlApp
            .Visible = False
            .Workbooks.Add
            iRow = 1
            For iI = 0 To iRe.Fields.Count - 1
                .Cells(iRow, iI + 1) = iRe(iI).Name
            Next
            While iRe.EOF = False
                iRow = iRow + 1
                For iI = 0 To iRe.Fields.Count - 1
                    .Cells(iRow, iI + 1) = iRe(iI)
                Next
                iRe.MoveNext
            Wend
            .ActiveWorkbook.SaveAs sFName ', -4143
            .Quit
        End With
        Set iExlApp = Nothing
    End Sub
      

  11.   

    直接操作数据库导出到excel文件就可以了!干吗这么复杂啊!
      

  12.   

    需要引用:
    Microsoft ActiveX Data Objects 2.xx Libraryxx是你电脑上该对象的版本号,我的引用的是2.5
      

  13.   

    需要引用:
    Microsoft ActiveX Data Objects 2.xx Libraryxx是你电脑上该对象的版本号,我的引用的是2.5