我觉得在报表处作很难,
建议用query在数据源处处理,
可以把不同的数据表放到一起。

解决方案 »

  1.   

    以下函数可以从任何DBGRID转换到EXCEL报表中:
    use excel2000
    procedure dbgridtoexcel(dbgrid1 : tdbgrid );
    var hei ,i :integer;
        ExcelApplication1:tExcelApplication;
        ExcelWorkbook1:tExcelWorkbook;
        ExcelWorksheet1:tExcelWorksheet;
    begin
    ExcelApplication1:=tExcelApplication.create(dbgrid1);
    ExcelWorkbook1:=tExcelWorkbook.create(dbgrid1);
    ExcelWorksheet1:=tExcelWorksheet.create(dbgrid1);
    ExcelApplication1.Connect;
    ExcelApplication1.Visible[0]:=True;
    ExcelApplication1.Workbooks.Add(extractfilepath(application.exename)+'text\book1.xlt',0);
    ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
    ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[1] as _WorkSheet);
    with dbgrid1.DataSource.DataSet do
    if active then
    begin
    first;
    hei:=1;
    i:=0;
     for i:=0 to fieldcount-1 do
     begin
      ExcelWorksheet1.Cells.Item[hei,i+1]:=Fields[i].displaylabel;
     end;
     hei:=2;
    while not(eof) do
    begin
     for i:=0 to fieldcount-1 do
     begin
      ExcelWorksheet1.Cells.Item[hei,i+1]:=Fields[i].asstring;
     end;
     next;
     inc(hei,1);
     end;
    end
    else
    showmessage('请先打开相对应的数据源.');
    ExcelApplication1.Disconnect;
    ExcelApplication1.Quit;
    ExcelApplication1.free;
    ExcelWorkbook1.free;
    ExcelWorksheet1.free;
    end;
      

  2.   

    to : netlib(河外孤星) 
    但报表的字段怎么处理呢。