大虾帮忙!如何将report报表中呈现的内容在excel中显示!

解决方案 »

  1.   

    这端代码将dbgrid中的内容存入excel应该对你有帮助
    var
      fexcel: variant;
      fworkbook: variant;
      fworksheet: variant;
      farray: variant;
      s, z: integer;
      rangestr: string;
      strtcol, strtrow: integer;begin
      if Query1.IsEmpty then exit;
      screen.cursor := crHourGlass;  try
        FExcel := CreateOleObject('excel.application');
      except
        screen.cursor := crDefault;
        Application.MessageBox('您没有安装excel', '错误', MB_OK);
        exit;
      end;  FWorkBook := FExcel.WorkBooks.Add;
      FWorkSheet := FWorkBook.WorkSheets[1];  strtcol := 0;
      strtrow := 0;  farray := vararraycreate([0, query1.RecordCount, 0, 13], varVariant);
      for z:=0 to 13 do
        farray[0, z]:=DbGrid1.Columns[z].Title.Caption;  with Query1 do
      begin
        First;
        s := 1;
        while not Eof do
        begin
          for z := 0 to 13 do
          begin
             farray[s - strtrow, z - strtcol] := Fields[z].AsString;
          end;
          Inc(s);
          Next;
        end;
      end;
      rangestr := 'A:N 1:'+InttoStr(query1.RecordCount+1);
      FWorkSheet.Range[rangestr].Value := fArray;
      try
        FWorkbook.SaveAs(ExtractFileDir(Application.ExeName) + '\chargescheme.xls');
      except
        screen.cursor := crDefault;
        exit;
      end;
      FExcel.Quit;
      FExcel := unassigned;
      screen.cursor := crDefault;
    end;