Delphi

±¾ÀàÔĶÁTOP10

¡¤·Ö²¼Ê½ÍøÂ翼ÊÔϵͳԭÐÍ·ÖÎö¼°ÊµÏÖ
¡¤ÓÎÏ·Íâ¹ÒÉè¼Æ¼¼Êõ̽ÌÖ¢Ù
¡¤Ê¹Ó**OOKËæÐļàÊÓWindows
¡¤Delphi Ë®¾§±¨±í´ò°ü½â¾ö
¡¤ÊÔÌâ¿â¿ª·¢ÖзÇÎı¾Êý¾ÝµÄ´¦Àí
¡¤ÈçºÎ½«¼¸¸öDBGRIDÀïµÄÄÚÈݵ¼Èëͬһ¸öEXCEL±íÖÐ....µÄÎÊÌâ
¡¤ÈçºÎʹÓÃDelphiÉè¼ÆÇ¿´óµÄ·þÎñÆ÷³ÌÐò
¡¤¹¤ÈËÏß³ÌÖйرմ°ÌåµÄʵÏÖ
¡¤ÓÃDLL·½Ê½·â×°MDI×Ó´°Ìå¡£
¡¤Ö§³ÖXPÏÂÍÐÅÌÀ¸ÆøÇòÌáʾµÄÍÐÅ̵¥Ôª

¡ú ·ÖÀർº½
VCÓïÑÔDelphi
VBÓïÑÔASP
PerlJava
ScriptÊý¾Ý¿â
ÆäËûÓïÑÔÓÎÏ·¿ª·¢
Îļþ¸ñÊ½ÍøÕ¾ÖÆ×÷
Èí¼þ¹¤³Ì.NET¿ª·¢
ÈçºÎ½«¼¸¸öDBGRIDÀïµÄÄÚÈݵ¼Èëͬһ¸öEXCEL±íÖÐ....µÄÎÊÌâ

×÷ÕߣºÎ´Öª À´Ô´£ºÔ¹âÈí¼þÕ¾ ¼ÓÈëʱ¼ä£º2005-2-28¡¡Ô¹âÈí¼þÕ¾

http://dev.csdn.net/article/53/53442.shtm
ÈçºÎ½«¼¸¸öDBGRIDÀïµÄÄÚÈݵ¼Èëͬһ¸öEXCEL±íÖУ¿
ÔÚÈí¼þʵ¼ÊÖÆ×÷ÖУ¬Îª½ÚÊ¡¿ª·¢³É±¾ºÍ¿ª·¢ÖÜÆÚ£¬Ò»Ð©Èí¼þÈËԱͨ³£»á°ÉDBGridÖеÄÊý¾ÝÖ±½Óµ¼³öµ½Excel±íÖУ¬¶øÏÈǰÄÜ¿´µ½µÄº¯Êý½ö½öÖ»ÄÜÔÚWorkBookµÄÒ»¸öSheetÖе¼ÈëÊý¾Ý£¬²»Ö§³Ö¶àSheet£¡¡£

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

µ¥ÔªÓ¦Óãº
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids, ActiveX, ComObj,
Excel2000, OleServer;

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;//  (1)
  XLApp.SheetsInNewWorkbook := High(Args) + 1;//  (2)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  XLApp.SheetsInNewWorkbook := High(Args) + 1;
  XLApp.WorkBooks.Add; 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  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;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
¾­¹ý²âÊÔ£¬ÉÏÃæÕâ¶Î´úÂëȷʵÓÐÎÊÌ⣺£¨ÓÐÐËȤµÄÅóÓÑ¿ÉÒÔ×Ô¼º²âÊÔһϣ©

±ÈÈ磺
ÏÈform1.CopyDbDataToExcel([dbgrid1,dbgrid2,dbgrid3]);//OK
ÔÙform1.CopyDbDataToExcel([dbgrid1,dbgrid2,dbgrid,dbgrid4]);//ÕâÑù¾Í³ö´í£¬Ìáʾ£ºÎÞЧË÷Òý

Èç¹ûÕâÑù£º
ÏÈform1.CopyDbDataToExcel([dbgrid1,dbgrid2,dbgrid3,dbgrid4]);//OK
ÔÙform1.CopyDbDataToExcel([dbgrid1,dbgrid2]);//OK

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
×ÜÖ®£ºÏÈÉÙºó¶à£¬¾Í³ö´í...
Ô­Òò¾Í³öÔÚÉÏÃæ´úÂ루1£©£¬£¨2£©Á½¶ÎÉÏ£¬¾­¹ý²âÊÔ,ÕýÈ·µÄÓ¦¸Ã½«£¨1£©£¬£¨2£©´úÂë¶Ôµ÷£¬²ÅÄܱ£Ö¤²»³ö´í....




Ïà¹ØÎÄÕ£º

Ïà¹ØÈí¼þ£º