`
jgsj
  • 浏览: 1028247 次
文章分类
社区版块
存档分类
最新评论

SQL快速导出到Excel

 
阅读更多

var

arXlsBegin: array[0..5] of Word = ($809, 8, 0, $10, 0, 0);

arXlsEnd: array[0..1] of Word = ($0A, 00);

arXlsString: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);

arXlsNumber: array[0..4] of Word = ($203, 14, 0, 0, 0);

arXlsInteger: array[0..4] of Word = ($27E, 10, 0, 0, 0);

arXlsBlank: array[0..4] of Word = ($201, 6, 0, 0, $17);

  接着调用下面的函数。

Procedure ExportExcelFile(FileName: string; bWriteTitle: Boolean; aDataSet: TDataSet);
var
 i, j: integer;
 Col, row: word;
 ABookMark: TBookMark;
 aFileStream: TFileStream;
 
procedure incColRow; //增加行列号
begin
 if Col = ADataSet.FieldCount - 1 then
 begin
  Inc(Row);
  Col :=0;
 end
 else
  Inc(Col);
 end;

procedure WriteStringCell(AValue: string);//写字符串数据
var
 L: Word;
begin
 L := Length(AValue);
 arXlsString[1] := 8 + L;
 arXlsString[2] := Row;
 arXlsString[3] := Col;
 arXlsString[5] := L;
 aFileStream.WriteBuffer(arXlsString, SizeOf(arXlsString));
 aFileStream.WriteBuffer(Pointer(AValue)^, L);
 IncColRow;
end;

procedure WriteIntegerCell(AValue: integer);//写整数
var
 V: Integer;
begin
 arXlsInteger[2] := Row;
 arXlsInteger[3] := Col;
 aFileStream.WriteBuffer(arXlsInteger, SizeOf(arXlsInteger));
 V := (AValue shl 2) or 2;
 aFileStream.WriteBuffer(V, 4);
 IncColRow;
end;

procedure WriteFloatCell(AValue: double);//写浮点数
begin
 arXlsNumber[2] := Row;
 arXlsNumber[3] := Col;
 aFileStream.WriteBuffer(arXlsNumber, SizeOf(arXlsNumber));
 aFileStream.WriteBuffer(AValue, 8);
 IncColRow;
end;

begin
if FileExists(FileName) then DeleteFile(FileName); //文件存在,先删除
 aFileStream := TFileStream.Create(FileName, fmCreate);
 Try
  //写文件头
  aFileStream.WriteBuffer(arXlsBegin, SizeOf(arXlsBegin));
  //写列头
  Col := 0; Row := 0;
  if bWriteTitle then
  begin
   for i := 0 to aDataSet.FieldCount - 1 do
    WriteStringCell(aDataSet.Fields[i].FieldName);
   end;
   //写数据集中的数据
   aDataSet.DisableControls;
   ABookMark := aDataSet.GetBookmark;
   aDataSet.First;
   while not aDataSet.Eof do
   begin
    for i := 0 to aDataSet.FieldCount - 1 do
     case ADataSet.Fields[i].DataType of
      ftSmallint, ftInteger, ftWord, ftAutoInc, ftBytes:
      WriteIntegerCell(aDataSet.Fields[i].AsInteger);
      ftFloat, ftCurrency, ftBCD:
      WriteFloatCell(aDataSet.Fields[i].AsFloat)
     else
      WriteStringCell(aDataSet.Fields[i].AsString);
     end;
     aDataSet.Next;
    end;
    //写文件尾
    AFileStream.WriteBuffer(arXlsEnd, SizeOf(arXlsEnd));
    if ADataSet.BookmarkValid(ABookMark) then aDataSet.GotoBookmark(ABookMark);
    Finally
     AFileStream.Free;
    ADataSet.EnableControls;
   end;
 end;

分享到:
评论

相关推荐

    怎么定时自动将SQL数据导出为Excel文件

    -- 导出Excel文件的路径 DECLARE @file_name VARCHAR(200); -- 导出Excel的文件名 DECLARE @exec_sql VARCHAR(200); -- SQL语句 -- 分开定义是为了以后修改路径或文件名更方便。 SET @file_path = 'E:\Dept_...

    sql数据导出到excel|SQL数据通 v1.0.zip

    将sql数据导出到excel是站长通常使用的一款用户说明工具,目的是将程序中的数据更清楚的展示给不懂的非程序设计者,也起到相关的保密工作,A5源码小编从网上找到这款sql数据导出到excel软件,希望可以帮助到有所需求...

    SQL定时导出数据到Excel

    ### SQL Server 定时导出数据到Excel及其他格式 #### 概述 在数据库管理和维护过程中,有时我们需要定期将数据库中的数据导出为其他格式,如Excel、Word或Access等,便于进一步的数据分析或者报告制作。本文将详细...

    从SQL数据库导出到Excel

    标题“从SQL数据库导出到Excel”涉及到的关键技术点主要集中在如何将数据从关系型数据库管理系统(RDBMS)如MySQL、SQL Server、Oracle或PostgreSQL等导出,并转换成Excel电子表格格式。这种操作在数据分析、报告...

    sqlserver导出excel工具

    标题中的“sqlserver导出excel工具”指的是一个用于将SQL Server数据库中的数据导出到Microsoft Excel格式的应用程序或脚本。这种工具通常被数据库管理员和数据分析师用来方便地处理和分析存储在SQL Server中的大量...

    SQL Server导出表到EXCEL文件的存储过程

    ### SQL Server导出表到Excel文件的存储过程详解 #### 标题理解: - **标题内容**:“SQL Server导出表到EXCEL文件的存储过程” - **标题解读**:此标题表明文章将介绍一种在SQL Server环境中使用的存储过程,该...

    sqlserver bcp导出到excel

    BCP(Bulk Copy Program)是SQL Server提供的一种高效的数据导入导出工具,能够快速地将大量数据从数据库复制到文本文件,或者从文本文件复制到数据库。 在SQL Server中使用BCP导出数据到Excel的具体方法通常涉及到...

    SQL结构导出EXCEL

    SQL(Structured Query Language)是用于管理和处理关系型数据库的标准语言,而将SQL表结构导出到EXCEL则是为了方便数据的整理、分析和分享。这个过程涉及到数据库设计、数据导出工具以及Excel的数据处理能力。 ...

    sql2008导出到excel

    本示例涉及的知识点主要集中在如何使用C#编程语言将SQL Server 2008中的数据导出到Excel文件中。下面我们将详细探讨这一过程。 1. **C#编程基础**:C#是.NET框架的基础,用于创建各种类型的Windows应用程序,包括...

    SQLServer导出数据到Excel

    当我们需要将SQL Server中的数据转移到Excel以便进行进一步的分析或报告时,就需要掌握如何将SQL Server数据库中的表数据导出到Excel电子表格。以下将详细介绍这个过程。 首先,你需要确保你的SQL Server安装了SQL ...

    输入sql语句导出excel

    "输入SQL语句导出Excel"这个主题,涉及到如何通过编程方式执行SQL查询并将结果保存到Excel文件中。下面我们将详细探讨这一过程。 首先,我们需要了解如何在代码中执行SQL查询。通常,这需要使用数据库驱动程序或...

    sqlserver导出excel文件出错解决方案

    在日常工作中,我们经常需要将 SQL Server 数据库中的数据导出到 Excel 文件以便进一步分析或共享。然而,在执行这一操作时,可能会遇到错误代码 0x800A0E7A 和 0x80040154 的问题。这两个错误通常与 SQL Server ...

    sql导入导出excel、access工具

    2. SQL导出到Excel: 反之,如果需要将SQL数据库中的数据导出为Excel格式,SSMS提供了“导出数据”功能,可以创建一个数据传输包,选择目标格式为Excel。另外,通过编写T-SQL查询并使用`BCP`命令行工具或`sqlcmd`也...

    sqlserver 数据库导出excel

    ### SQL Server 数据库导出至 Excel 的方法及步骤 #### 核心知识点: 1. **使用 OPENROWSET 方法** 2. **使用 BCP (Bulk Copy Program) 命令** 3. **配置 SQL Server 参数** #### 详细解释与示例: ##### 1. ...

    SQL 导入导出Excel数据的语句

    本文将详细介绍如何使用 SQL 语句将数据从 Excel 文件中导入到数据库中,以及如何将数据从数据库中导出到 Excel 文件中。 导入数据 要从 Excel 文件中导入数据到 SQL 数据库中,可以使用 OPENROWSET 函数。...

    把Sql Server里的数据导出到Excel里面!

    本篇文章将详细讲解如何将Sql Server中的数据导出到Excel。 首先,我们需要了解Sql Server和Excel的基本概念。Sql Server是由微软开发的一款关系型数据库管理系统(RDBMS),广泛应用于存储、管理和检索大量结构化...

    sql导入导出成excel源代码

    根据提供的文件信息,本文将详细解释如何通过 SQL 实现数据导入导出至 Excel 文件的功能,同时探讨代码的具体实现以及可能存在的限制与优化方法。 ### 一、SQL 导入导出至 Excel 的背景 在日常的数据处理工作中,...

    SQL导出EXCEL(带表头)的存储过程

    ### SQL导出EXCEL(带表头)的存储过程详解 在日常的数据库管理与数据分析工作中,将数据从SQL数据库导出至Excel是常见的需求之一。尤其当涉及到大量的数据处理时,一个能够自动生成带有表头的Excel文件的存储过程...

    sql导入导出数据到Excel

    sql导入导出数据到Excel的详细步骤

    SQL和Oracle数据导出到EXCEL

    标题“SQL和Oracle数据导出到EXCEL”指的是在信息技术领域中,如何将数据库系统(如SQL Server或Oracle)中的数据转换并导出为Microsoft Excel格式。这通常是为了数据分析、报表制作或者与其他不支持数据库查询的...

Global site tag (gtag.js) - Google Analytics