感谢!!!!!!!!!!!!!

解决方案 »

  1.   

    推荐你使用Ehlib中的DBGridEh,可以直接将查询出来的数据导入到excel中.下面是ehlib的下载网址:
    http://www.51delphi.com/delphi/soft?type=数据库
      

  2.   

    用OLE Object吧,老土一点的方法。
      

  3.   

    http://search.csdn.net/search.asp?key=dbgrid%B5%BC%C8%EBexcel&class=Delphi&size=10&option=advance&x=60&y=10
      

  4.   

    var
    asheet,range:variant;
    i,K,M,N,y :integer;
    ls_FileName:string;
    tsList  :TStringList;
    s       :string;
    begin
    ExcelApplication1.Visible[0]:=True;
    ExcelApplication1.Workbooks.Add(xlWBATWorksheet,0);
    asheet:=ExcelApplication1.Worksheets.Item[1];
    i:=DBGrid1.DataSource.DataSet.FieldCount;
    range:=asheet.range[asheet.cells[1,1],asheet.cells[1,i]];
    range.merge;//合并单元格
    range.HorizontalAlignment:=xlCenter;//居中
    range.Font.Size:=14;//设置字体大小
    range.value:=Trim(EdtTiTle.Text);//赋值
    for i:=0 to DBGrid1.Columns.Count-1 do
    asheet.cells[2,i+1].value:=Trim(DBGrid1.Columns.Items[i].Title.Caption);
    K:=1;
    N:=DBGrid1.Columns.count;
    I:=DBGrid1.DataSource.DataSet.RecordCount;
    tsList:=TStringList.Create;
    try
    DBGrid1.DataSource.DataSet.first;
    while not DBGrid1.DataSource.DataSet.Eof do
    begin
                        s:='';
                        for y:=0 to n-1 do
                        begin
                            s:=s+Trim(DBGrid1.DataSource.DataSet.Fields[y].AsString)+#9;
                            Application.ProcessMessages;
                        end;
                        tsList.Add(s);//读取到STRINGLIST
                        DBGrid1.DataSource.DataSet.next;
                    end;
                Clipboard.AsText:=tsList.Text;//复制到剪贴板
        finally
            tsList.Free;
        end;
        ExcelApplication1.Disconnect;
        asheet.cells[3,1].select;
        aSheet.Paste;//粘贴
        range:=asheet.range[asheet.cells[2,1],asheet.cells[DBGrid1.DataSource.DataSet.RecordCount+2,DBGrid1.DataSource.DataSet.FieldCount]];
        range.select;//选择列
        range.borders.linestyle:=1;//画线
        for i:=1 to DBGrid1.DataSource.DataSet.FieldCount do begin
        range:=asheet.range[asheet.cells[1,i],asheet.cells[DBGrid1.DataSource.DataSet.RecordCount,i]];
        range.EntireColumn.AutoFit;//自适应
        end;
        Screen.Cursor:=crDefault;
        ExcelApplication1.Disconnect;
        aSheet:=Unassigned; 
        DBGrid1.DataSource.DataSet.First;
    end;