导出表中的数据到Excel,包含字段名,文件为真正的Excel文件

转载 2007年09月13日 22:45:00
/*--数据导出EXCEL

导出表中的数据到Excel,包含字段名,文件为真正的Excel文件
,如果文件不存在,将自动创建文件
,如果表不存在,将自动创建表
基于通用性考虑,仅支持导出标准数据类型
--作者: 邹建 --*/

/*--调用示例

p_exporttb @tbname='地区资料',@path='c:/',@fname='aa.xls'
--*/
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
@tbname sysname, --要导出的表名,注意只能是表名/视图名
@path nvarchar(1000), --文件存放目录
@fname nvarchar(250)='' --文件名,默认为表名
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=@tbname+'.xls'

--检查文件是否已经存在
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

--数据库创建语句
set @sql=@path+@fname
if exists(select 1 from #tb where a=1)
set @constr='DRIVER={Microsoft Excel Driver (*.xls)};DSN='''';READONLY=FALSE'
    +';CREATE_DB="'+@sql+'";DBQ='+@sql
else
set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 5.0;HDR=YES'
+';DATABASE='+@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>255 then 255 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 syscolumns a left join systypes b on a.xtype=b.xusertype
where b.name not in('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')
and object_id(@tbname)=id
select @sql='create table ['+@tbname
+']('+substring(@sql,2,8000)+')'
,@fdlist=substring(@fdlist,2,8000)

exec @err=sp_oamethod @obj,'execute',@out out,@sql
if @err<>0 goto lberr

exec @err=sp_oadestroy @obj

--导入数据
set @sql='openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES
;DATABASE='+@path+@fname+''',['+@tbname+'$])'

exec('insert into '+@sql+'('+@fdlist+') select '+@fdlist+' from '+@tbname)

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
 

SQL Server 数据库获取表名,字段名,与字段类型语句。方便导出到Excel中使用。

SQL Service 数据库获取表名,字段名,与字段类型语句。方便导出到Excel中使用。 select a.name as columnname,b.name tablename , c.name...
  • aa332073044
  • aa332073044
  • 2014年03月07日 16:56
  • 3512

导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件

/*--数据导出EXCEL导出表中的数据到Excel,包含字段名,文件为真正的Excel文件,如果文件不存在,将自动创建文件,如果表不存在,将自动创建表基于通用性考虑,仅支持导出标准数据类型--作者:...
  • Mobidogs
  • Mobidogs
  • 2007年09月13日 22:47
  • 981

execl数据保存到数组中

借助odbc进行操作execl表格: #include "stdafx.h" #include "OdbcExcel.h" #include "OdbcExcelDlg.h" #ifdef _DEB...
  • u010951938
  • u010951938
  • 2015年12月30日 16:22
  • 1051

将数据库中的数据导出为Excel文件

导出excel文件的简单小例子(仅供大家参考),建议前台页面用链接跳转导出,浏览器可以识别并弹出下载提示框,不能用ajax。...
  • smile_spart
  • smile_spart
  • 2017年11月24日 09:57
  • 86

jsp实现Excel文件导入到MySQL数据库中

此步骤需要借助jspsmartupload.jar,poi_3.2.jar和jxl.jar包 1.在jsp界面中: ...
  • qq_38274324
  • qq_38274324
  • 2017年07月21日 02:11
  • 2170

将中DataSet的数据导出为EXCEL文件

/**////   /// 执行导出 ,请在项目中先引用Mircorsoft Excel library 11.0  ///   /// 要导出的DataSet  /// 要导出的文件名  priva...
  • antlxy
  • antlxy
  • 2005年05月25日 13:17
  • 2491

将matlab数据保存为excel文件

今有如下数据,欲将其写入data.xls文件中。 angle = [-180 -165 -150 -135 -120 -105 -90 -75 -60 -45 -30 -15 0 15 30 4...
  • ROBERT_TONNY
  • ROBERT_TONNY
  • 2014年06月16日 14:30
  • 6876

C# 将ListView数据导出到Excel文本之方法

面代码演示了如何将ListView中的数据导出到Excel的方法,例子代码中还包括了一些编程中的其它小方法,比如:1)文件的拷贝复制方法2)文件属性的修改3)ListView控件Columns的遍历4...
  • songkexin
  • songkexin
  • 2007年12月07日 11:53
  • 3087

OFFICE//Excel-使用宏操作另一个Excel文件

#使用宏在一个Excel文件中操作另一个Excel文件。办公软件中使用宏处理一些信息,尤其是大量的重复信息,可以提高效率。操作过程结构如下:   Dim strFilePath As String  ...
  • sunsley
  • sunsley
  • 2006年02月22日 10:44
  • 1781

C# 讲解五种导出access数据到Excel文件格式中

1.首先声明,这些方法也都是本人搜集的资料,然后为已所用,程序中不足之处,还请高手指点. 这些方法都没有关闭Excel进程。 2.网上有好多关于用SQL语句导入导出的例子,这里不再重复写了。 方法...
  • angel20082008
  • angel20082008
  • 2016年06月24日 09:09
  • 1825
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:导出表中的数据到Excel,包含字段名,文件为真正的Excel文件
举报原因:
原因补充:

(最多只允许输入30个字)