`
uop_hai
  • 浏览: 19085 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

数据导出EXCEL

sql 
阅读更多
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

/*--数据导出EXCEL

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

--邹建   2003.10(引用请保留此信息)--*/

/*--调用示例

p_exporttb   @sqlstr= 'select   *   from   地区资料 '
,@path= 'c:\ ',@fname= 'aa.xls ',@sheetname= '地区资料 '
--*/
create   proc   p_exporttb
@sqlstr   varchar(8000), --查询语句,如果查询语句中使用了order   by   ,请加上top   100   percent
@path   nvarchar(1000), --文件存放目录
@fname   nvarchar(250), --文件名
@sheetname   varchar(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= 'temp.xls '
if   isnull(@sheetname, ' ')= ' '   set   @sheetname=replace(@fname, '. ', '# ')

--检查文件是否已经存在
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   8.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
declare   @tbname   sysname
set   @tbname= '##tmp_ '+convert(varchar(38),newid())
set   @sql= 'select   *   into   [ '+@tbname+ ']   from( '+@sqlstr+ ')   a '
exec(@sql)

select   @sql= ' ',@fdlist= ' '
select   @fdlist=@fdlist+ ',[ '+a.name+ '] '
,@sql=@sql+ ',[ '+a.name+ ']   '
+case 
when   b.name   like   '%char ' 
then   case   when   a.length> 255   then   'memo '
else   'text( '+cast(a.length   as   varchar)+ ') '   end
when   b.name   like   '%int '   or   b.name= 'bit '   then   'int '
when   b.name   like   '%datetime '   then   'datetime '
when   b.name   like   '%money '   then   'money '
when   b.name   like   '%text '   then   'memo '
else   b.name   end
FROM   tempdb..syscolumns   a   left   join   tempdb..systypes   b   on   a.xtype=b.xusertype
where   b.name   not   in( 'image ', 'uniqueidentifier ', 'sql_variant ', 'varbinary ', 'binary ', 'timestamp ')
and   a.id=(select   id   from   tempdb..sysobjects   where   name=@tbname)

if   @@rowcount=0   return

select   @sql= 'create   table   [ '+@sheetname
+ ']( '+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   8.0;HDR=YES
;DATABASE= '+@path+@fname+ ' ' ',[ '+@sheetname+ '$]) '

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
分享到:
评论

相关推荐

    组态王历史数据导出EXCEL表格的方法.docx

    组态王历史数据导出EXCEL表格的方法 组态王是一种工业自动化软件,具有强大的数据采集和处理能力。为了更好地对历史数据进行分析和处理,需要将其导出到EXCEL表格中。本文将介绍组态王历史数据导出EXCEL表格的方法...

    C#下成功登录后datagridview数据导出excel

    在这个场景中,"C#下成功登录后datagridview数据导出excel"的标题描述了一个常见的需求:用户通过登录窗口验证身份后,能够将数据显示在datagridview控件中,并且支持将这些数据导出到Excel文件中。这一过程涵盖了多...

    通用查询数据导出excel文件

    "通用查询数据导出excel文件"这一主题涉及到的关键技术点包括SQL查询、数据处理以及Excel文件生成。 首先,SQL(Structured Query Language)是一种用于管理和处理关系数据库的标准语言。通过编写SQL查询语句,我们...

    易语言高级表格数据导出Excel表格

    总的来说,易语言高级表格数据导出Excel表格涉及的知识点包括: 1. 易语言高级表格组件的使用,包括数据填充、读取和修改。 2. 文件操作命令的掌握,如打开、写入和关闭文件。 3. 数据序列化,特别是将表格数据转换...

    datatable数据导出excel

    在IT行业中,`DataTable`是一种常见的数据操作对象,尤其在...以上就是关于“datatable数据导出excel”的知识点。了解这些内容后,你可以根据实际项目需求,选择合适的库和方法来实现从`DataTable`到Excel的导出功能。

    java解决大批量数据导出Excel产生内存溢出的方案

    在Java开发中,当面临大批量数据导出到Excel文件时,可能会遇到内存溢出的问题。这是因为Excel文件格式本身的设计,以及Java默认处理大数据的方式,可能导致内存占用过高,尤其是在一次性加载大量数据到内存中进行...

    extjs grid数据导出excel文件

    本文将深入讲解EXTJS Grid如何实现数据导出到Excel文件的功能。 首先,我们要明白EXTJS Grid的数据导出到Excel的过程通常涉及到以下几个步骤: 1. **获取Grid数据**:在EXTJS中,Grid的数据存储在Store对象中。要...

    基于JavaScript的JSP页面数据导出Excel.pdf

    "基于JavaScript的JSP页面数据导出Excel" 基于JavaScript的JSP页面数据导出Excel是指通过JavaScript技术实现JSP页面数据导出到Excel文件中的过程。该技术可以满足用户对报表的需求,提供了一个实用的解决方案。 ...

    java 数据导出excel

    pache POI实现数据库中数据导出excel报表。在java中有很多实现数据导出excel报表的第三方jar包。但在比较了一下感觉还是POI相对来说比较好用

    thinkPHP实现数据库数据导出Excel表格

    总结一下,使用ThinkPHP实现数据库数据导出Excel表格,主要涉及以下步骤: 1. 引入并配置PhpSpreadsheet库。 2. 在控制器中创建一个方法,调用Model查询数据库数据。 3. 使用PhpSpreadsheet创建Excel工作表,并将...

    简单实用网页表格数据导出Excel电子表格文件jQuery插件

    本项目"简单实用网页表格数据导出Excel电子表格文件jQuery插件"正是为了解决这一问题。 首先,我们来探讨jQuery的核心概念。jQuery简化了JavaScript的DOM操作,提供了统一的API来选择元素、添加事件处理程序、执行...

    delphi高效率导出数据到excel

    在这篇文章中,我们将介绍如何使用 Delphi 高效率地将数据导出到 Excel 中。 Delphi 中的 Excel 操作 在 Delphi 中,我们可以使用多种方式来操作 Excel,例如使用 OLE 自动化、ADO、DBGridEh 等。其中,使用 OLE ...

    C# datagridview控件中的数据导出EXCEL表

    在标题中提到的“C# datagridview控件中的数据导出EXCEL表”,这是一个常见的需求,尤其是在数据分析、报告生成或数据备份等场景。导出过程涉及到两个关键组件:C#编程和Microsoft Excel的交互。 1. **C#与Excel的...

    Data From Keil to Excel (keil数据导出至excel)

    为了将这些数据导出到Excel,我们需要在KEIL中设置数据导出选项。通常,KEIL可以通过仿真器或调试器的内存查看器来查看和复制内存数据。在内存窗口中选择要导出的数据范围,然后通过复制(Ctrl+C)将数据粘贴到Excel...

    数据导入与数据导出Excel_aspx开发教程.rar

    本教程“数据导入与数据导出Excel_aspx开发教程”着重讲解如何在ASP.NET环境中处理Excel文件,实现数据的导入和导出功能。 首先,我们需要了解基础的Excel文件处理技术。在.NET框架中,可以使用多种库来操作Excel,...

    数据库大量数据导出Excel

    POI3.8版本之前的版本处理大量数据的导出Excel效果不是很理想,主要在与Excel2003版本单个Sheet的行限制为65536,大量数据的导出得分多个Sheet,针对这一点,客户就不会满意。其次,在实验过程中,大数据量的导出很...

    easyui+数据导出为Excel

    SheetJS提供了强大的API,允许我们在前端创建、修改和导出Excel文件。 以下是使用EasyUI和SheetJS实现数据导出的基本步骤: 1. 引入必要的资源:确保在HTML页面中引入EasyUI的CSS和JS文件,以及SheetJS的xlsx.full...

Global site tag (gtag.js) - Google Analytics