请教:我想把要查询的内容显示到EXCEL中,同时打开EXCEl,可以看到查询到的数据。

解决方案 »

  1.   

    ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open('E:\aa.xls',null,false,null,null,null,null,null,null,null,null,null,null,0));
      ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[1] as _WorkSheet);
      ExcelWorksheet1.Cells.Item[1,1]:='aaa';
      ExcelWorksheet1.Cells.Item[1,2]:='bbb';
      ExcelWorkbook1.Save ;
      ExcelWorkbook1.Close(false);
      ExcelApplication1.Quit;
      

  2.   

    2)excel:
    首先创建 Excel 对象,使用ComObj:
    var ExcelApp: Variant;
    ExcelApp := CreateOleObject( 'Excel.Application' );
    1) 显示当前窗口:
    ExcelApp.Visible := True;
    2) 更改 Excel 标题栏:
    ExcelApp.Caption := '应用程序调用 Microsoft Excel';
    3) 添加新工作簿:
    ExcelApp.WorkBooks.Add;
    4) 打开已存在的工作簿:
    ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );
    5) 设置第2个工作表为活动工作表:
    ExcelApp.WorkSheets[2].Activate; 
    或 
    ExcelApp.WorksSheets[ 'Sheet2' ].Activate;
    6) 给单元格赋值:
    ExcelApp.Cells[1,4].Value := '第一行第四列';
    7) 设置指定列的宽度(单位:字符个数),以第一列为例:
    ExcelApp.ActiveSheet.Columns[1].ColumnWidth := 5;
    8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
    ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
    9) 在第8行之前插入分页符:
    ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1;
    10) 在第8列之前删除分页符:
    ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;
    11) 指定边框线宽度:
    ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
    1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )
    12) 清除第一行第四列单元格公式:
    ExcelApp.ActiveSheet.Cells[1,4].ClearContents;
    13) 设置第一行字体属性:
    ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书';
    ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;
    ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;
    ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;
      

  3.   

    我是用query做的. 你可以换成 dataset, dbgrid等
    procedure TFormQuery.BtnSaveToExcelClick(Sender: TObject);
    var
      i, row, col : Integer;
    begin
      if Query1.FieldCount > 0 then
      begin
        Try
          ExcelApplication1.Connect;
        Except
          ShowMessage(ExcelConError);
          Abort;
        end;
        ExcelApplication1.Workbooks.Add(emptyParam,0);
        ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
        ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Worksheets[1] as _Worksheet);    for i:=0 to Query1.FieldCount-1 do
        begin
          ExcelWorkSheet1.Cells.Item[1,i+1] := Query1.Fields[i].FieldName;
        end;
        row := 2;
        while not(Query1.Eof) do
        begin
          col := 1;
          for i:=0 to Query1.FieldCount-1 do
          begin
            ExcelWorkSheet1.Cells.Item[row,col] := Query1.Fields[i].AsString;
            col := col+1;
          end;
          Query1.Next;
          row := row+1;
        end;    if SaveDialog1.Execute then
        begin
          ExcelWorkSheet1.SaveAs(SaveDialog1.FileName);
          ShowMessage('成功导出数据.');
        end;    ExcelApplication1.Quit;
        ExcelApplication1.Disconnect;
      end
      else
        ShowMessage('没有数据.');  ExecExe('excel路径'); // 最后打开excel
    end;
      

  4.   

    楼上的都可以解决问题的,如果图省事的话可用dbgrideh ,导出很方便的. 呵呵!!
      

  5.   

    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;