`
宋科明
  • 浏览: 101657 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Delphi编程将数据库数据快速导入Excel

阅读更多

在开发数据库应用程序中,经常要将类型相同的数据导出来,放到Excel文件中,利用Excel强大的编辑功能,对数据作进一步的加工处理。这有许多的方法,我们可以使用OLE技术,在Delphi中创建一个自动化对象,通过该对象来传送数据。 也可以使用ADO,通过与Excel数据存储建立连接,使用ADO这种独立于数据库后端的技术来导出数据集的数据。

  可这两种技术都有一个共同的缺点,那就是慢,数据量少还好,用户不会有太多的感觉,可一旦数据量大,比如,超过1千条,速度就让人难以忍受了,那么有没有更好的办法,既可以快速地导出数据,又不用安装附加的软件。也许好多人都想到了剪贴板的方式,这种方式速度是快,可也有不好的一面,那就是数据量大占用内存也大,并且在Excel中调用PASTE方法时,需要锁定输入,这使用起来,就有点不方便了

  这里我为大家介始一种比较好的方法,使用文件流的方式,通过TfileStream直接写入Excel文件。我写了一个函数,通过它可将数据集中的数据直接导入到Excel文件中。我测试了一下,1M的数据,不到十秒就完成了。附源程序。

  首先在你的程序中定义以下几个数组:
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;

以上程序,在DELPHI6中通过测试!

分享到:
评论

相关推荐

    Delphi编程将数据库数据快速导入Excel(1).rar

    本教程将探讨如何使用Delphi编程将数据库中的数据高效地导入到Excel中。 首先,我们需要了解Delphi与数据库交互的基本概念。Delphi通过ADO(ActiveX Data Objects)组件库提供对各种数据库的支持,如Oracle、SQL ...

    DELPHI 从EXCEL导入到数据库

    标题中的"DELPHI 从EXCEL导入到数据库"是一个关于使用Delphi编程语言将Excel电子表格中的数据导入到数据库的应用实例。这个话题涉及到多个IT领域的知识点,包括Delphi编程、Excel文件处理以及数据库交互。 Delphi是...

    Delphi中将Excel数据导入到数据库中

    在Delphi编程环境中,将Excel数据导入到数据库是一项常见的任务,尤其在数据处理和报表生成时。本篇文章将深入探讨如何使用Delphi的COM对象(Component Object Model)接口与Microsoft Excel进行交互,并将数据顺利...

    Delphi中从Excel导入数据的通用方法

    在Delphi编程环境中,从Excel导入数据是一项常见的需求,尤其在数据分析、报表处理或数据库集成等场景下。本文将详细探讨如何实现这个功能,并提供一个通用的方法。 首先,要完成这个任务,我们需要一个能与Excel...

    DELPHI操作ACCESS数据库+EXCEL

    综上所述,这个项目涉及到了Delphi与Access数据库的交互,可能包括数据的查询、编辑、保存等操作,同时结合了Excel的功能,将数据导出到电子表格中,便于进一步的数据分析和报告生成。开发人员利用Delphi的强大功能...

    Delphi+将Excel导入Access数据库

    本教程将详细介绍如何使用Delphi编程环境将Excel数据有效地导入到Access数据库中。Delphi是一款强大的Object Pascal集成开发环境(IDE),而Excel和Access则分别是Microsoft Office套件中的电子表格和数据库管理工具...

    Excel数据导入数据库中

    本篇文章将深入探讨如何使用Delphi编程环境,将Excel数据高效地导入到MySQL数据库中,并独立创建数据库。 首先,我们需要理解Excel的数据结构。Excel文件(.xls或.xlsx)本质上是二维表格,包含行、列和单元格,...

    Delphi将excel数据导入到数据库中源码

    在导入Excel数据时,首先需要通过ComOBJ来创建Excel应用程序对象,然后可以打开并读取Excel工作簿。 2. **Excel OLE自动化**:OLE自动化是一种技术,允许程序间共享数据和功能。在Delphi中,通过创建并操作Excel...

    Delphi版SQLite数据库工具

    4. 数据导入导出:可以从其他数据库格式(如CSV、Excel)导入数据,也可以将SQLite数据库导出为这些格式。 5. 权限管理:对数据库的读写权限进行控制,保护数据安全。 6. 错误日志:记录操作过程中的错误信息,便于...

    delphi7数据库内容导出至excel表格源码

    标题 "Delphi 7数据库内容导出至Excel表格源码" 涉及到的是一个在 Delphi 7 开发环境中实现的程序,该程序能够从SQL Server 2000数据库中读取数据并将其导出到Excel电子表格中。这个功能在数据管理和分析工作中极其...

    delphi中把excel数据导入access表

    在Delphi编程环境中,将Excel数据导入到Access数据库是一项常见的任务,这有助于数据的整合与管理。本篇文章将详细介绍如何使用Delphi实现这一过程。 首先,我们需要了解涉及到的关键技术组件。Delphi自身并不直接...

    通过Delphi将EXECL数据导入SQL数据库

    本教程将详细介绍如何使用Delphi编程环境将Excel数据导入到SQL数据库中。Delphi是一个强大的Windows应用程序开发工具,它支持使用Object Pascal语言,而Excel数据的导入则涉及到文件I/O和数据处理。SQL数据库,如...

    delphi实现excel导入数据库到firebird

    本篇文章将详细探讨如何使用Delphi编程环境实现Excel数据导入到Firebird数据库的过程。Firebird是一种开源的关系型数据库管理系统,它以其高效、稳定和安全性著称,而Delphi则是一个强大的RAD(快速应用开发)工具,...

    万能excel导入数据库 delphi

    接下来,导入Excel数据的关键在于解析和转换Excel文件。在Delphi中,可以使用Jedi VCL或DevExpress等第三方库来读取Excel文件。这些库提供了API,可以访问工作簿、工作表、行和列,从而获取数据。在导入过程中,通常...

    delphi实现excel和SQLserver数据的导入导出

    在IT行业中,Delphi是一种...这个过程需要对Delphi编程、数据库操作以及Excel文件格式有一定了解,但通过以上介绍的工具和方法,可以大大简化这个过程,提高开发效率。在实际项目中,可以根据需求选择最适合的方案。

    delphi的excel导入sqlserver2000

    本篇文章将详细探讨如何使用Delphi编程环境将Excel数据导入到SQL Server 2000数据库中。Delphi是一款强大的RAD(快速应用开发)工具,它提供了丰富的组件和库,使得开发者能够方便地与各种数据库进行交互。在本场景...

    delphi导入excel至sql

    本教程将详细介绍如何使用Delphi编程环境将Excel数据导入到SQL数据库,特别是在繁体中文环境下操作的方法。Delphi是一款强大的RAD(快速应用开发)工具,它提供了丰富的组件和API,使得与各种数据库进行交互变得简单...

    excel数据导入SQL server 2000:for delphi 7

    标题 "Excel数据导入SQL Server 2000: for Delphi 7" 涉及的是在Delphi 7开发环境中将Excel数据批量导入到SQL Server 2000数据库的过程。这个操作在数据处理和分析中非常常见,特别是在需要整合不同来源的数据时。...

    Delphi将Excel导入Access(菜鸟版)

    本教程将针对初学者,详细介绍如何使用Delphi编程语言将Excel数据导入到Access数据库中。Delphi是一款强大的RAD(快速应用开发)工具,它支持与多种数据库系统交互,包括Microsoft Access。Excel作为广泛使用的电子...

    Delphi实现将数据从Excel中导入到SQL Server

    本文将深入探讨如何使用Delphi这一强大的开发工具,实现从Excel文件中导入数据到SQL Server数据库的过程。Delphi作为一种高效的编程语言,提供了丰富的库和组件,使得这种数据迁移变得相对简单而高效。 ### Delphi...

Global site tag (gtag.js) - Google Analytics