1.如何将DELPHI中,dbgrid中查询的数据保存成EXCEL文档
2.如何实现EXCEL中的数据导入到DELPHI中的DBGRID中,然后再导入到数据表中 
谢谢!

解决方案 »

  1.   

    1.
    procedure TForm1.DBgridToExcel(bsGrid:TDBGrid;filename:string); //DBGrid输出到Excel
    var
     v,sheet: Variant;
     i,j:integer;
    begin
     SaveDialog1.Filter:='*.xls';
       SaveDialog1.FileName:=filename;
       if SaveDialog1.Execute then
     try
       v:=CreateOleObject('Excel.Application');   //创建ole对象
       v.WorkBooks.Add;
       Sheet:=v.WorkBooks[1].WorkSheets[1];
       bsGrid.DataSource.DataSet.first;
       i:=1;
      While Not(bsGrid.DataSource.DataSet.Eof)  Do
      Begin
        For j:=1 To bsGrid.FieldCount  Do
        if bsGrid.Columns[j-1].Visible=true then
         begin
          Sheet.Cells[i+1,j]:= bsGrid.Fields[j-1].AsString ; //+1保留列标题
          Sheet.Cells[1,j]:= bsGrid.Fields[j-1].FieldName ;
         end;
         bsGrid.DataSource.DataSet.Next ;
         i := i+1 ;
       End ;
       v.WorkBooks[1].saveas(SaveDialog1.FileName);
       v.WorkBooks[1].close;
       v.quit;
       v:=Unassigned;
       except
        v.DisplayAlerts:=false;   //不提示存盘
        v.Quit;                 //关闭OLE链接
        showmessage('初始化Excel失败,可能没装Excel,或者其他错误;请重新再试。');
        close;
     end;
    end;
    调用时,
      DBgridToExcel(bsGrid1;'wwwwwww');
      

  2.   

    2.应该是先倒入数据库,再显示于Dbgrid,网上很多这样的代码
      

  3.   

    是啊,次序不对,应该是先导入数据库后显示。
    DBGrid本来就显示的是数据库中的数据。
      

  4.   

    第一个问题已经由darkliu(钢铁工人甲)说了...
    但第二个问题是不可能的...你的次序错了...dbgrid是到一个数据库中读数据或者写入..而不是数据库到dbgrid中读数据的