我给你贴一段代码,自己加进去就可以用了!
procedure WriteDatasetToExcel(AQueryName: TQuery; AStrVar: String);
procedure TMainFrm.WriteDatasetToExcel(AQueryName: TQuery; AStrVar: String);
var
  EclApp,WorkBook : Variant;
  xlsFileName : String ;
  I : Integer ;
  column : Integer ;
  Row : Integer ;
  Fdate:TDateTime;
  Year, Month, Day, Hour, Min, Sec, MSec: Word;
  StrDate:String ;
  StrDate1:String ;
Begin
  Fdate:=now ;
  DecodeDate(Fdate, Year, Month, Day);
  DecodeTime(Fdate, Hour, Min, Sec, MSec);
  StrDate:=formatdatetime('yyyy-mm-dd-hh-mm-ss',Fdate) ;
  StrDate1:=formatdatetime('yyyy/mm/dd hh:mm:ss',Fdate) ;
  xlsfilename :=astrvar;
    Try
    Begin
      EclApp := CreateOleObject('Excel.Application');
      WorkBook:=CreateOleObject('Excel.Sheet');
      End
    Except
     ShowMessage('您的计算机上没有 Microsoft Excel!');
     Exit;
  end;
  try
    workBook:=EclApp.workBooks.Add ;
    row:=2;
    EclApp.Workbooks.Item[1].Activate;
    eclApp.Cells.font.colorindex:=5 ;
    EclApp.Activesheet.Cells(1,1):=AStrVar ;
    For I := 1 To AQueryName.FieldCount Do
    EclApp.Activesheet.Cells(2,I):=AQueryName.Fields[I-1].FieldName ;
    If Not AQueryName.Active Then AQueryName.Active := True ;
    AQueryName.First ;
    While Not(AQueryName.Eof) do
    begin
     column:=1;
    for i:=1 to AQueryName.FieldCount do
    begin
      eclApp.Cells.Item[row+1,column]:=AQueryName.fields[i-1].AsString;
      column:=column+1;
    end;
      AQueryName.Next;
      row:=row+1;
    End ;
      WorkBook.saveas(xlsFileName);
      WorkBook.close;
      WorkBook:=eclApp.workBooks.Open(xlsFileName);
    if MessageDlg('xlsFileName'+'对该文件是否保存?',
      mtConfirmation,[mbYes, mbNo], 0) = mrYes then
      WorkBook.save
    Else
      workBook.Saved := True;
      WorkBook.Close;
      eclApp.Quit;
      eclApp:=Unassigned;
    except
      ShowMessage('Excel 文件保存失败');
      WorkBook.close;
      eclApp.Quit; {释放VARIANT变量}
      eclApp:=Unassigned;
    end;
  ShowMessage('EXCEL 文件保存完毕') ;
end;
至于怎么样调用,你应该知道了,
我现在就是用这个!完全可以,如果有什么问题的话,
可以直接找我:[email protected]

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      excel_sheet:variant;
      e_s:variant;
      i,j:integer;
      save_ok:boolean;
    begin
      Table1.TableName:=ComboBox1.Text;
      Table1.Open;
      try         //啟動Excel
        excel_sheet:=CreateOleObject('excel.sheet');
      except
        showmessage('無法啟動 MS Excel');
        exit;
      end;
      excel_sheet.application.visible:=true;        //啟示 MS Excel 執行情況
      for i:=0 to table1.FieldCount-1 do
    //    excel_sheet.cells(1,i+1):=Table1.Fields[i].FullName;
      j:=1;
      while not Table1.Eof do
      begin
        j:=j+1;
        for i:=0 to Table1.FieldCount-1 do
    //      excel_sheet.cells(j,i+1):=Table1.Fields[i].AsString;
        Table1.Next;
      end;
      Table1.Close;
      if messagedlg('轉換成攻! 要存檔嗎',mtinformation,[mbyes,mbno],0)=mryes then
      begin
        save_ok:=SaveDialog1.Execute;
        if save_ok then
          excel_sheet.saveas(SaveDialog1.FileName);
      end;
      excel_sheet.application.quit;                //關閉 MS Excel
    end;转载自--JELLYMAN