按条件查询后,再把查得的数据集导出到excel中就行了

解决方案 »

  1.   

    先利用sql查询处结果,再把结果一个个写入excel,可以利用activex控制excel,如果你的报表格式较简单,可把结果保存至一文本文件,字段之间用某一符号间隔入逗号和空格等等,再用excel导入这个文件就行了
      

  2.   

    给你一个把DBGrid导出到Excel的函数把,其实Dbgrid显示的就是查寻得到的记录集
    procedure SendToExcel(Form: TForm; DBGrid: TDBGrid);
    var
      eclApp, WorkBook: Variant;
      xlsFileName: String;
      i, j: Integer;
      FieldValue: String;
      SaveDialog: TSaveDialog;
    begin
      with Form do
        begin
          SaveDialog:= TSaveDialog.Create(Application);
          SaveDialog.DefaultExt:= '.xls';
          SaveDialog.Filter:= 'Excel文件|*.xls|所有文件|*.*';
          if SaveDialog.Execute then
            begin
              xlsFileName:= SaveDialog.FileName;
              try
              //创建OLE对象Excel Application与WorkBook
                eclApp:=CreateOleObject('Excel.Application');
                WorkBook:=CreateOleobject('Excel.Sheet');
              except
                ShowMessage('您的机器里未安裝Microsoft Excel!');
                Exit;
              end;          try
                WorkBook:= eclApp.workBooks.Add;            for i:= 0 to DBGrid.Columns.Count - 1 do
                  begin
                    eclApp.Cells[1, i + 1]:= DBGrid.Columns.Items[i].Title.Caption;
                  end;
                DBGrid.DataSource.DataSet.First;
                for i:= 0 to DBGrid.DataSource.DataSet.RecordCount - 1 do
                  begin
                    for j:= 0 to DBGrid.Columns.Count - 1 do
                      begin
                        FieldValue:= DBGrid.Columns[j].Field.AsString;
                        eclApp.Cells[i + 2, j + 1]:=FieldValue;
                      end;
                    DBGrid.DataSource.DataSet.Next;
                  end;
                if FileExists(xlsFileName) then
                  begin
                    if Application.MessageBox('文件已经存在!' + #13 + #10 +
                               '是否进行替换?', '提示', MB_OKCANCEL +
                               MB_ICONQUESTION + MB_SYSTEMMODAL) = IDOK then
                      begin
                        DeleteFile(PChar(xlsFileName));
                        WorkBook.Saveas(xlsFileName);
                        WorkBook.Close;
                        eclApp.Quit;
                        eclApp:= Unassigned;
                      end;
                  end
                else
                  begin
                    WorkBook.Saveas(xlsFileName);
                    WorkBook.Close;
                    eclApp.Quit;
                    eclApp:= Unassigned;
                  end;
              except
                ShowMessage('不能正确操作Excel文件。可能是該文件已被其他程序打开, 或系統错误。');
                WorkBook.Close;
                eclApp.Quit;
                //釋放VARIANT变量            eclApp:=Unassigned;
              end;
            end;
        end;
    end;