如题
小弟不胜谢谢

解决方案 »

  1.   

    procedure TfrmGlobal.DBGridInFoToExcel(FileName, TitleCaption: string;
      MakeDataSource: TDataSource; makeDBGrid: TDBGrid);
    var
         xlApp, xlSheet, szValue: Variant;
         ARow, iLoop: word;
    begin
         xlApp := CreateOleObject('Excel.Application');
         try
             xlSheet := CreateOleObject('Excel.Sheet');
             xlSheet := xlApp.WorkBooks.Add;
             
             // 主标题
              xlSheet.WorkSheets[1].Cells[1,1] := TitleCaption;
             
        //  表格标题     
             for iLoop := 0 to makeDBGridEh.Columns.Count - 1 do
                  xlSheet.WorkSheets[1].Cells[2, iLoop+1] := makeDBGridEh.Columns[iLoop].Title.Caption;         // 数据
             ARow := 3;
             with MakeDataSource.DataSet do
             begin
                  DisableControls;
                  First;
                  while not Eof do
                  begin
                       for iLoop := 0 to Fields.Count - 1 do
                       begin
                           szValue := Fields[iLoop].Value;
                           xlSheet.WorkSheets[1].Cells[ARow, iLoop+1] := szValue;
                       end;
                       Inc(ARow);
                       Next;
                  end;
                  First;
                  EnableControls;
             end;         try
                  xlSheet.SaveAs(FileName);
                  Application.MessageBox('导出完毕!', '提示', MB_IconExclamation);
             finally
                  xlSheet.Close;
                  xlApp.Quit;
                  xlApp := UnAssigned;
             end;
         except
              MessageBox(handle, '本机没有安装Excel.', '提示',MB_IconExclamation);
         end;end;
    ...
    uses Excel2000, {C:\Program Files\Borland\Delphi6\Imports}OleServer;procedure TFrmMain.WriteExcel(AdsData: TADODataSet; sName, Title: string);
    var
    ExcelApplication1: TExcelApplication;
    ExcelWorksheet1: TExcelWorksheet;
    ExcelWorkbook1: TExcelWorkbook; 
    i, j: integer; 
    filename: string;
    begin 
    filename := concat(extractfilepath(application.exename), sName, '.xls');
    try
    ExcelApplication1 := TExcelApplication.Create(Application); 
    ExcelWorksheet1 := TExcelWorksheet.Create(Application); 
    ExcelWorkbook1 := TExcelWorkbook.Create(Application); 
    ExcelApplication1.Connect; 
    except 
    Application.Messagebox('Excel 没有安装!', 'Hello', MB_ICONERROR + mb_Ok);
    Abort; 
    end; 
    try 
    ExcelApplication1.Workbooks.Add(EmptyParam, 0); 
    ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]); 
    ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _worksheet); 
    AdsData.First; 
    for j := 0 to AdsData.Fields.Count - 1 do 
    begin 
    ExcelWorksheet1.Cells.item[3, j + 1] := AdsData.Fields[j].DisplayLabel; 
    ExcelWorksheet1.Cells.item[3, j + 1].font.size := '10'; 
    end; 
    for i := 4 to AdsData.RecordCount + 3 do 
    begin 
    for j := 0 to AdsData.Fields.Count - 1 do 
    begin 
    ExcelWorksheet1.Cells.item[i, j + 1] :=AdsData.Fields[j].Asstring;
    ExcelWorksheet1.Cells.item[i, j + 1].font.size := '10';
    end; 
    AdsData.Next; 
    end;
    ExcelWorksheet1.Columns.AutoFit;
    ExcelWorksheet1.Cells.item[1, 2] := Title;
    ExcelWorksheet1.Cells.Item[1, 2].font.size :='14'; 
    ExcelWorksheet1.SaveAs(filename); 
    Application.Messagebox(pchar('数据成功导出' + filename), 'Hello',mb_Ok);
    finally 
    ExcelApplication1.Disconnect; 
    ExcelApplication1.Quit; 
    ExcelApplication1.Free; 
    ExcelWorksheet1.Free; 
    ExcelWorkbook1.Free; 
    end; 
    end;procedure Tfrmmain.FormCreate(Sender: TObject);
    begin
    WriteExcel(ADODataSet1, 'ergonge','hhh');
    end;
      

  2.   

    function Tform1.ExportToExcel(Header: String;
      vDataSet: TDataSet): Boolean;
    var
      I,VL_I,j: integer;
      S,SysPath: string;
      MsExcel:Variant;
    begin
      Result:=true;
      if Application.MessageBox('您确定将数据导入到Excel吗?','提示!',MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then
      begin
          SysPath:=ExtractFilePath(application.exename);
          with TStringList.Create do
          try
            vDataSet.First ;
            S:=S+Header;
            add(s);
            s:='';
            For I:=0 to vDataSet.fieldcount-1 do
              begin
                If vDataSet.fields[I].visible=true then
                   S:=S+#9+vDataSet.fields[I].displaylabel;
              end;
            system.Delete(s,1,1);
            add(s);
            while not vDataSet.Eof do
            begin
              S := '';
              for I := 0 to vDataSet.FieldCount -1 do
                begin
                  If vDataSet.fields[I].visible=true then
                     S := S + #9 + vDataSet.Fields[I].AsString;
                end;
              System.Delete(S, 1, 1);
              Add(S);
              vDataSet.Next;
            end;
            Try
              SaveToFile(SysPath+'\Tem.xls');
            Except
              ShowMessage('写文件时发生保护性错误,Excel 如在运行,请先关闭!');
              Result:=false;
              exit;
            end;
          finally
            Free;
          end;
          Try
            MSExcel:=CreateOleObject('Excel.Application');
          Except
            ShowMessage('Excel 没有安装,请先安装!');
            Result:=false;
            exit;
          end;
          Try
            MSExcel.workbooks.open(SysPath+'\Tem.xls');
          Except
            ShowMessage('打开临时文件时出错,请检查'+SysPath+'\Tem.xls');
            Result:=false;
            exit;
          end;
            MSExcel.visible:=True;
            for VL_I :=1 to 4 do
            MSExcel.Selection.Borders[VL_I].LineStyle := 0;
            MSExcel.cells.select;
            MSExcel.Selection.HorizontalAlignment :=3;
            MSExcel.Selection.Borders[1].LineStyle := 0;      MSExcel.Range['A1'].Select;
          MSExcel.Selection.Font.Size :=24;      J:=0 ;
          for i:=0 to vdataset.fieldcount-1 do
              if vDataSet.fields[I].visible  then
                 J:=J+1;      VL_I :=J;
          MSExcel.Range['A1:'+chr(VL_I+64)+'1'].Select;
          MSExcel.Range['A1:'+chr(VL_I+64)+'1'].Merge;
      end
      else
        Result:=false;end;
      

  3.   

    天啊,用Developer Express 中的cxGrid控件吧。功能强大无比,导出Excel等格式如此简单、快速...
    with SaveDialog1 do
      begin
        if SaveDialog1.execute then
        ExportGrid4ToEXCEL(SaveDialog1.filename,cxGrid1,True,True);
        ...
      end;
    (加入单元 USEs cxExportGrid4Link)
      

  4.   

    to:weizi2000(秋风啊) 
    是不是把你的程序复制到form中就可以了?还有什么设置吗?procedure TfrmGlobal.DBGridInFoToExcel(FileName, TitleCaption: string;
      MakeDataSource: TDataSource; makeDBGrid: TDBGrid);
    这个是什么事件?