如何将几个DBGRID里的内容导入同一个EXCEL表中?

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

前言:

  在软件实际制作中,为节省开发成本和开发周期,一些软件人员通常会吧DBGRID中的数据直接导出到EXCEL表中,而先前能看到的函数仅仅只能在WorkBook的一个Sheet中导入数据,不支持多Sheet!。

单元应用:

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables, Grids, DBGRIDs, ActiveX, ComObj,
  EXCEL2000, OleServer;

测试环境:

  OS:Win2k Pro;EXCEL2k;Delphi6.0

源程序:  

{
功能描述:把DBGRID输出到EXCEL表格(支持多Sheet)
设计:CoolSlob
日期:2002-10-23
支持:CoolSlob@163.com
调用格式:CopyDbDataToEXCEL([DBGRID1, DBGRID2]);
}
procedure CopyDbDataToEXCEL(Args: array of const);
var
  iCount, jCount: Integer;
  XLApp: Variant;
  Sheet: Variant;
  I: Integer;
begin
  Screen.Cursor := crHourGlass;
  if not VarIsEmpty(XLApp) then
  begin
    XLApp.DisplayAlerts := False;
    XLApp.Quit;
    VarClear(XLApp);
  end;

  try
    XLApp := CreateOleObject('EXCEL.Application');
  except
    Screen.Cursor := crDefault;
    Exit;
  end;

  XLApp.WorkBooks.Add;
  XLApp.SheetsInNewWorkbook := High(Args) + 1;

  for I := Low(Args) to High(Args) do
  begin
    XLApp.WorkBooks[1].WorkSheets[I+1].Name := TDBGRID(Args[I].VObject).Name;
    Sheet := XLApp.Workbooks[1].WorkSheets[TDBGRID(Args[I].VObject).Name];
   
    if not TDBGRID(Args[I].VObject).DataSource.DataSet.Active then
    begin
      Screen.Cursor := crDefault;
      Exit;
    end;

    TDBGRID(Args[I].VObject).DataSource.DataSet.first;
    for iCount := 0 to TDBGRID(Args[I].VObject).Columns.Count - 1 do
      Sheet.Cells[1, iCount + 1] :=
          TDBGRID(Args[I].VObject).Columns.Items[iCount].Title.Caption;
         
    jCount := 1;
    while not TDBGRID(Args[I].VObject).DataSource.DataSet.Eof do
    begin
      for iCount := 0 to TDBGRID(Args[I].VObject).Columns.Count - 1 do
        Sheet.Cells[jCount + 1, iCount + 1] :=
            TDBGRID(Args[I].VObject).Columns.Items[iCount].Field.AsString;
           
      Inc(jCount);
      TDBGRID(Args[I].VObject).DataSource.DataSet.Next;
    end;
  end;

  XlApp.Visible := True;
  Screen.Cursor := crDefault;
end;

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值