我要用sql 导出报表数据到excel
1 无法显示标头和报表名
2 要预先建立以个文件夹 修改文件夹的属性为可以修改 才可以导出excel 
请问要怎么样才能解决这2个问题

解决方案 »

  1.   

    EXEC master..xp_cmdshell 'bcp "SELECT top 10 * FROM siccdb_51job.dbo.Rpt_CDR_Group_Detail " queryout "C:\新建文件夹\Temp6.xls" -c -S"WWW-7818B76848D\SQLEXPRESS" -U"sa" -P"sa"'
    这是我的语句
      

  2.   

    SQL SERVER 和EXCEL的数据导入导出
    1、在SQL SERVER里查询Excel数据:
    -- ======================================================
    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
    下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
    SELECT * 
    FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    -------------------------------------------------------------------------------------------------2、将Excel的数据导入SQL server :
    -- ======================================================
    SELECT * into newtable
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
    实例:
    SELECT * into newtable
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    -------------------------------------------------------------------------------------------------3、将SQL SERVER中查询到的数据导成一个Excel文件
    -- ======================================================
    T-SQL代码:
    EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
    参数:S 是SQL服务器名;U是用户;P是密码
    说明:还可以导出文本文件等多种格式
    实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
    EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
    在VB6中应用ADO导出EXCEL文件代码: 
    Dim cn  As New ADODB.Connection
    cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
    cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
    ------------------------------------------------------------------------------------------------4、在SQL SERVER里往Excel插入数据:
    -- ======================================================
    insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)T-SQL代码:
    INSERT INTO  
    OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',  
    'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]  
    (bestand, produkt) VALUES (20, 'Test')  
      

  3.   

    我要用sql 导出报表数据到excel 
    1 无法显示标头和报表名 表头就是列名的话可以,不过比较麻烦
      

  4.   

    带字段名导出到excel文件--可以考虑用下面的存储过程   
        
      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   
        
      /*--数据导出Text   
        
      导出查询语句中的数据到Text,包含字段名   
      如果文件不存在,将自动创建文件   
      基于通用性考虑,仅支持导出标准数据类型   
      --邹建   2003.10--*/   
        
      /*--调用示例   
        
      --导出Text   
      p_exporttb   @sqlstr='select   *   from   地区资料',@path='c:\',@over=1   
      --*/   
      create   proc   p_exporttb   
      @sqlstr   varchar(8000), --要导出的查询语句   
      @path   nvarchar(1000), --文件存放目录   
      @fname   nvarchar(250)='temp.txt',--文件名,默认为temp   
      @over   bit=0 --是否覆盖已经存在的文件,如果不覆盖,则直接追加   
      as   
      declare   @err   int,@src   nvarchar(255),@desc   nvarchar(255),@out   int   
      declare   @obj   int,@constr   nvarchar(1000),@sql   varchar(8000),@fdlist   varchar(8000)   
        
      --参数检测   
      if   isnull(@fname,'')=''   set   @fname='temp.txt'   
        
      --检查文件是否已经存在   
      if   right(@path,1)<>'\'   set   @path=@path+'\'   
      create   table   #tb(a   bit,b   bit,c   bit)   
      set   @sql=@path+@fname   
      insert   into   #tb   exec   master..xp_fileexist   @sql   
      if   exists(select   1   from   #tb   where   a=1)   
      if   @over=1   
      begin   
      set   @sql='del   '+@sql   
      exec   master..xp_cmdshell   @sql,no_output   
      end   
      else   
      set   @over=0   
      else   
      set   @over=1   
        
      --数据库创建语句   
      set   @sql=@path+@fname   
      set   @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended   Properties="Text'   
      +';HDR=YES;DATABASE='+@path+'"'   
        
      --创建表的SQL   
      declare   @tbname   sysname   
      set   @tbname='##tmp_'+convert(varchar(38),newid())   
      set   @sql='select   *   into   ['+@tbname+']   from('+@sqlstr+')   a'   
      exec(@sql)   
        
      --连接数据库   
      exec   @err=sp_oacreate   'adodb.connection',@obj   out   
      if   @err<>0   goto   lberr   
        
      exec   @err=sp_oamethod   @obj,'open',null,@constr   
      if   @err<>0   goto   lberr   
        
      --创建表的SQL   
      select   @sql='',@fdlist=''   
      select   @fdlist=@fdlist+','+a.name   
      ,@sql=@sql+',['+a.name+']   '   
      +case   when   b.name   in('char','nchar','varchar','nvarchar')   then   
        'text('+cast(case   when   a.length>250   then   250   else   a.length   end   as   varchar)+')'   
      when   b.name   in('tynyint','int','bigint','tinyint')   then   'int'   
      when   b.name   in('smalldatetime','datetime')   then   'datetime'   
      when   b.name   in('money','smallmoney')   then   'money'   
      else   b.name   end   
      FROM   tempdb..syscolumns   a   left   join   tempdb..systypes   b   on   a.xtype=b.xusertype   
      where   b.name   not   in('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')   
      and   a.id=(select   id   from   tempdb..sysobjects   where   name=@tbname)   
      select   @sql='create   table   ['+@fname   
      +']('+substring(@sql,2,8000)+')'   
      ,@fdlist=substring(@fdlist,2,8000)   
        
      if   @over=1   
      begin   
      exec   @err=sp_oamethod   @obj,'execute',@out   out,@sql   
      if   @err<>0   goto   lberr   
      end   
        
      exec   @err=sp_oadestroy   @obj   
        
      set   @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Text;HDR=YES;DATABASE='   
      +@path+''',''select   *   from   ['+@fname+']'')'   
        
      --导入数据   
      exec('insert   into   '+@sql+'('+@fdlist+')   select   '+@fdlist+'   from   ['+@tbname+']')   
        
      set   @sql='drop   table   ['+@tbname+']'   
      exec(@sql)   
        
      return   
        
      lberr:   
      exec   sp_oageterrorinfo   0,@src   out,@desc   out   
      lbexit:   
      select   cast(@err   as   varbinary(4))   as   错误号   
      ,@src   as   错误源,@desc   as   错误描述   
      select   @sql,@constr,@fdlist   
      go
      

  5.   

    第2个问题 : 如果不先定义一个文件夹就出现 
    Error = [Microsoft][ODBC SQL Server Driver]无法打开 BCP 主数据文件  
    的的错误
      

  6.   

    5楼 你的那存储过程老报 0x80004005 Microsoft JET Database Engine 
    exec p_exporttb 'select * from siccdb_yb.dbo.ACDGroupList','C:\新建文件夹\','Temp7.xls','1'
      

  7.   

    Hi,
      
     http://topic.csdn.net/u/20091229/15/3928667d-b8fe-4093-9f6c-4d4e8c66c071.htmlEXEC sp_makewebtask 
        @outputfile = 'd:\testing.xls', 
        @query = 'Select TOP 10 * from shenliang1985..T1', 
        @colheaders =1, 
        @FixedFont=0,@lastupdated=0,@resultstitle='Querying details'
      

  8.   

    没用EXEC sp_makewebtask 
        @outputfile = 'C:\新建文件夹\testing.xls', 
        @query = 'select * from siccdb_yb.dbo.ACDGroupList', 
        @colheaders =1, 
        @FixedFont=0,@lastupdated=0,@resultstitle='Querying details'
    消息 17750,级别 16,状态 0,过程 xp_makewebtask,第 1 行
    无法加载 DLL xpweb90.dll 或它引用的一个 DLL。原因: 126(找不到指定的模块。)。
      

  9.   

    Hi,0)版本问题,开发版,企业版 并无此问题1)查看MS SQL版本SELECT SERVERPROPERTY('Edition')2)查看MS SQL是否有此项  Progrms
    → Microsoft SQL Server 2005
    → Configuration Tools
    → SQL Server Surface Area Configuration
    → Surface Area Configuration For Features
    → Web Assistant 
    → Enable Web Assistant3)测试之例子,xsl的亦可,这里以html格式的为例3.1)
    EXEC sp_makewebtask 'g:\testliang.html', 'SELECT  * FROM AdventureWorks.dbo.test'3.2)结果
    [code=VB]Query Results--------------------------------------------------------------------------------Last updated: 2010-03-05 16:40:08.730firstColumn SencondColumn third 
    a b a 
    b c b 
    c d c 
    c e c [/code]
      

  10.   

    Hi, 因编辑粗糙和网络问题,更正如下错误:
    0)是xls 非xsl
    1)请忽略和