procedure TForm_jkc.EXCEL1Click(Sender: TObject);
 var
 
   ExcelApplication1: TExcelApplication;
    ExcelWorkbook1: TExcelWorkbook;
    ExcelWorksheet1: TExcelWorksheet;begin;
Try    ExcelApplication1 := TExcelApplication.Create(Application);
    ExcelWorksheet1 := TExcelWorksheet.Create(Application);
    ExcelWorkbook1 := TExcelWorkbook.Create(Application);    ExcelApplication1.Connect;
  Except
    MessageDlg('Excel may not be installed',
      mtError, [mbOk], 0);
    Abort;
  End;
  ExcelApplication1.Visible[0] := True;
  ExcelApplication1.Caption := 'Excel Application';
  ExcelApplication1.Workbooks.Add(EmptyParam,0);ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0) ); ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
 with ExcelWorkSheet1.QueryTables.Add(adodm.Query_jkc.Recordset,ExcelWorkSheet1.Range['A4', EmptyParam], EmptyParam) do
          begin
       FieldNames:=false;
         refresh(false);
       end;    ExcelWorksheet1.Rows.AutoFit;
   ExcelApplication1.Disconnect;
    
    ExcelApplication1.Free;
    ExcelWorksheet1.Free;
    ExcelWorkbook1.Free;end;
==========

解决方案 »

  1.   

    procedure TForm_BJCJVIEW.BitBtn3Click(Sender: TObject);
    var
      bExcelVisible:boolean;
      i,j:integer;
    begin
      if application.MessageBox('启动Excel界面吗?','请回答',MB_YESNO + MB_DEFBUTTON2) <> IDNO then
        bExcelVisible:=true
      else bExcelVisible:=false;
       Try
         ExcelApplication1.Connect;
       Except
         MessageDlg('EXCEL可能未安装!',mtError, [mbOk], 0);
         Abort;
       End;
        ExcelApplication1.Workbooks.Add(null,0);
        ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
        //增加一个工作页
            try
              ExcelWorkBook1.WorkSheets.Add(null,ExcelWorkBook1.WorkSheets[ExcelWorkBook1.Worksheets.Count],null,null,0);
            except
              Application.MessageBox('创建Excel新页失败','错误警报',MB_OK);
              exit;
            end;
        ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
        for i:=0 to stringgrid1.ColCount-1 do
           for j:=0 to stringgrid1.RowCount-1 do
        ExcelWorksheet1.Cells.Item[j+1,i+1].Value := stringgrid1.Cells[i,j];
      if bExcelVisible then
        ExcelApplication1.visible[0]:=true  //显示EXCEL程序
      else
      begin
        SaveDialog1.FileName:=StaticText1.Caption;
        if SaveDialog1.Execute then
        begin
          try
            ExcelWorkSheet1.SaveAs(SaveDialog1.FileName);
            Application.MessageBox('保存成功','恭喜',MB_OK);
          except
            Application.MessageBox('保存失败','错误警报',MB_OK);
          end;
        end;
        //此时要自己关闭Excel
       ExcelApplication1.Disconnect;
       ExcelApplication1.Quit;
      end;
    end;