看了也查找了以前的帖子,但就是没有人清楚或者用过这东西,请用过的写写怎么使用,火急????谢谢,不要发那些没有用处的导出到excel,谢谢,数据量大,上十万。

解决方案 »

  1.   

    我用宏试了一下,很快,但在delphi使用ExcelQueryTable,参照宏了代码,调试通过,运行的时候老说没有注册类别,
      

  2.   

    给你个demo,建立odbc为qq,导出sqlserver2000northwind数据库中的orders表数据,测试通过
    ----------
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, StdCtrls, ExcelXP, OleServer;type
      TForm1 = class(TForm)
        Button1: TButton;
        ExcelApp: TExcelApplication;
        ExcelQueryTable: TExcelQueryTable;
        ExcelBook: TExcelWorkbook;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        function ToExcelFile(var Filename,SheetName,WIndowCaption:OleVariant;SqlStr:String):Boolean;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
         uses ComObj;
    {$R *.dfm}function TForm1.ToExcelFile(var Filename,SheetName,WindowCaption:OleVariant;SqlStr:String):Boolean;
    var
    NewTemplate,ItemIndex:olevariant;
    CurSheet:_WorkSheet;
    connectStr:olevariant;
    begin
    NewTemplate:=emptyParam;
    try
    try
    ExcelApp.Connect;
    except
    MessageDlg('您可能没有安装EXCEL', mtError, [mbOk], 0);
    Abort;
    end;
    ExcelApp.visible[0]:=TRUE;
    ExcelApp.Caption:=WindowCaption;
    ExcelApp.Workbooks.Add(Newtemplate,0);
    ExcelBook.ConnectTo(ExcelApp.workBooks.Item[1]);
    ExcelBook.Title[0]:=WIndowCaption;
    ExcelBook.Activate;
    CurSheet:=ExcelBook.Sheets[1] as _worksheet;
    CurSheet.Name:=SheetName;
    connectstr := 'ODBC;DSN=qq;';
    CurSheet.QueryTables.Add(connectstr,CurSheet.range['a3','e3'],SqlStr);
    ExcelQueryTable.ConnectTo(CurSheet.QueryTables.Item(1));
    ExcelQueryTable.Refresh;
    except
    on E: Exception do
    begin
    ItemIndex:=FALSE;
    ExcelBook.Close(ItemIndex);
    ExcelApp.Disconnect;
    ExcelApp.Quit;
    Application.MessageBox('数据输出到EXCEL过程出错,请检查EXCEL版本是否一致','警告',mb_ok);
    exit;
    end;
    end;
    ExcelQueryTable.Disconnect;
    ExcelBook.Disconnect;
    ExcelApp.Disconnect;
    Result:=TRUE;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var XlsApp,XlsSheet,WndCaption:OleVariant;
    begin
       XlsApp:=OleVariant('c:\aa.xls');
       XlsSheet:=OleVariant('a');
       WndCaption:=OleVariant('test');
       ToExcelFile(XlsApp,XlsSheet,WndCaption,'select * from orders');end;end.
      

  3.   

    ExcelApp.visible[0]:=false;就可以不打开excle窗口
    加入ExcelApp.Save(XlsApp);自动保存