我想在Delphi6中把查询到的SQL Server中满足条件的记录以Excel格式显示出来,请问如何处理?

解决方案 »

  1.   

    用delphi写一个.iqy文件(excel获取外部数据),用excel打开它既可。
      

  2.   

    可以将其结果转存为Excel文件,有很多这样的控件
      

  3.   

    对呀,查询结果是可以存为Excel文件,但是我想在界面中以Excel格式显示出来,就像DbGrid一样。
      

  4.   

    请参考:http://expert.csdn.net/Expert/TopicView1.asp?id=1909498
      

  5.   

    你手工在excel中获取外部数据,连接到你要查询的数据库,随便选一个表,几个字段,然后保存这个查询,你会得到一个.dqy(刚才写错了)文件。用记事本打开它,前面是固定格式,最后是一句sql把它改成你想要的就行了。
    最后可能还有刚才你写的查询的字段名,不用管它,删了就行。明白了吧,在程序里面写一个文本文件,保存成.dqy文件,然后打开一个excel,用excel打开这个文件就可以了。
      

  6.   

    请参考:http://expert.csdn.net/Expert/TopicView1.asp?id=1909498
      

  7.   

    procedure ToExce(table1:Tdataset);
    var
    WorkBk : _WorkBook; //  Define a WorkBook
    WorkSheet : _WorkSheet; //  Define a WorkSheet
    I, J, R, C : Integer;
    IIndex : OleVariant;
    TabGrid : Variant;
    XLapp:TexcelApplication;
    begin
       XLapp:=TexcelApplication.create(nil);
       IIndex := 1;
       R := table1.RecordCount;
       C := table1.FieldCount;
         TabGrid := VarArrayCreate([0,(R - 1),0,(C - 1)],VarOleStr);   I := 0;
       
        table1.First;
        while not  table1.Eof do
        begin
          for J := 0 to (C - 1) do
           TabGrid[I,J] := table1.Fields[J].Asstring ;
          Inc(I,1);
          table1.Next ;
        end;     // XLApp.Connect;
           XLApp.WorkBooks.Add(xlWBatWorkSheet,0);
       
       WorkBk := XLApp.WorkBooks.Item[IIndex];
       
       WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
          Worksheet.Range['A1',Worksheet.Cells.Item[R,C]].Value := TabGrid;
       
       //WorkSheet.Name := 'Customers';
       Worksheet.Columns.Font.Bold := True;
       Worksheet.Columns.HorizontalAlignment := xlRight;
       WorkSheet.Columns.ColumnWidth := 14;
         XLApp.Visible[0] := True;
       
       XLApp.Disconnect;
       TabGrid := Unassigned;
    end;
      

  8.   

    如果你是用ListView显示数据的话,下面这段代码可以将其中的数据
    导出到Excel里面
    uses comobj;var
      excelapp,newbook,newsheet:variant;
      i:integer;
    begin
    try
      excelapp:=createoleobject('excel.application');
      newbook:=excelapp.workbooks.add;
      newsheet:=newbook.sheets.add;
      excelapp.visible:=true;
      for j:=0 to listview1.Items.Count-1 do
      for i:=0 to listview1.Columns.Count-2 do
      //excel的行,列下标从1开始,所以要加1
      newsheet.cells.item(j+1,i+1):=lv1.Items[j].SubItems[i];
    finally
      newbook:=Unassigned;
      newsheet:=Unassigned;
      excelapp:=Unassigned;
    end;
    end;
      

  9.   

    我想把查询到的结果直接以Excel格式显示出来,不需要转换。
      

  10.   

    调用方法:   Unit excel;   interface   uses   Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs, StdCtrls,ComObj;   //ComObj是操作OLE对象的函数集   type TForm1 =class(TForm)   Button1: TButton;   procedure Button1Click(Sender: TObject);   private   { Private declarations }   public   { Public declarations }   end;   var   Form1: TForm1;   implementation   {$R *.DFM}   procedure TForm1.Button1Click(Sender: TObject);   var   eclApp,WorkBook:Variant;   //声明为OLE Automation 对象   xlsFileName:string;begin   xlsFileName:=‘ex.xls‘;   try   //创建OLE对象Excel Application与 WorkBook   eclApp:=CreateOleObject(‘Excel.Application‘);   WorkBook:=CreateOleobject(‘Excel.Sheet‘);   except   ShowMessage(‘您的机器里未安装Microsoft Excel。‘);   Exit;   end;   try   ShowMessage(‘下面演示:新建一个XLS文件,并写入数据,最后关闭它。‘);   workBook:=eclApp.workBooks.Add;   eclApp.Cells(1 , 1):=‘字符型‘;   eclApp.Cells(2 , 1):=‘Excel文件‘;   eclApp.Cells(1 , 2):=‘Money型‘;   eclApp.Cells(2 , 2):=10.01;   eclApp.Cells(1 , 3):=‘日期型‘;eclApp.Cells(2 , 3):=Date;   WorkBook.saveas(xlsFileName);   WorkBook.close;   ShowMessage(‘下面演示:打开刚创建的XLS文件,并修改其中的内容,然后,由用户决定是否保存。‘);   WorkBook:=eclApp.workBooks.Open(xlsFileName);   eclApp.Cells(2 , 1):=‘Excel文件类型‘;   if MessageDlg(xlsFileName+‘文件已被修改,是否保存?‘,mtConfirmation, [mbYes, mbNo], 0) = mrYes then   WorkBook.save   else   workBook.Saved := True; //放弃修改   WorkBook.Close;   eclApp.Quit;   //退出Excel Application   //释放VARIANT变量   eclApp:=Unassigned;   except   ShowMessage(‘不能正确操作Excel文件。可能是该文件已被其他程序打开, 或系统错误。‘);   WorkBook.close;   eclApp.Quit;   //释放VARIANT变量   eclApp:=Unassigned;   end;   end;   end. 
      

  11.   

    还有一个比较好的方式,是用ADO控件,设置连接的扩展属性,可以直接调用和读写的。
      

  12.   

    我就是用ADO控件,怎么设连接的扩展属性呀。