例如T表有a,b,c,d,e,f等字段,现在我想要a,b,c三个字段导出EXCEL,字段是自己选择的,
现在的问题是ADOQuery对字段不知道怎么处理(增加,删除),请大家给点思路,多谢!!!

解决方案 »

  1.   

    procedure TFrmPrintReport.DataToExcel;
    var
      I, J, K, Count: integer;
      S: string;
    begin
      Panel2.Visible :=true;
      Animate1.Active :=true;  //创建Ole对象
      try
        ExcelApplication := CreateOleObject('Excel.Application');
      except
        ExcelApplication := Null;
        Panel2.Visible :=False;
        Animate1.Active :=False;
        MSShow('请先安装MicrSoft Office Excel97/2000。');
        Exit;
      end;  ExcelApplication.Visible := False;
      try
        ExcelName:=ExcelApplication.WorkBooks.Add(ExtractFilePath(Application.ExeName)+'ReportModal\Modal.xls');
        ExcelSheet := ExcelName.Worksheets[1];
      except
        Panel2.Visible :=False;
        Animate1.Active :=False;
        MSShow('没有找到报表模板,请保证Modal.xls在程序文件的ReportModal文件夹内!');
        Abort;
      end;  try
        J := 11;    ADOQuery1.First;
        while not ADOQuery1.eof do
          begin
          ExcelSheet.cells(J,1)  := ADOQuery1.RecNo;
          ExcelSheet.cells(J,2)  := ADOQuery1.fieldbyname('OriHB').Value;
          ExcelSheet.cells(j,3)  := Trim(ADOQuery1.FieldByName('Camer').AsString );
          ExcelSheet.cells(j,4)  := Trim(ADOQuery1.FieldByName('FlightNo').AsString);
          ExcelSheet.cells(j,5)  := Trim(ADOQuery1.FieldByName('SurName').AsString);
          ExcelSheet.cells(j,6)  := Trim(ADOQuery1.FieldByName('GivenName').AsString);
          ExcelSheet.cells(j,7)  := Trim(ADOQuery1.FieldByName('PassportNo').AsString);
          ExcelSheet.cells(j,14) := Trim(ADOQuery1.FieldByName('Weight').AsString);
          inc(J);
          ADOQuery1.next;
        end;    //合并单元格
        Ranges:=ExcelSheet.range['A10: P' + inttostr(J -1)];
        //画线
        Ranges.Borders.LineStyle := 1;
      except
        MsShow('在往EXCEL写入数据时出现错误,请重新发送Email!');
        Panel2.Visible :=False;
        Animate1.Active :=False;
        abort;
      end;  try
        //保存数据
        ExcelName.SaveAs(MDReportDir+'\'+ReportName);
      except
        MSShow('无法保存数据');
        Panel2.Visible :=False;
        Animate1.Active :=False;
        abort;
      end;  //全部释放variant变量 ,否则Excel进程无法关闭
      try
        ExcelName.Close;
        ExcelApplication.Quit;
        ExcelSheet :=Unassigned ;
        ExcelName := Unassigned;
        ExcelApplication:=Unassigned;
        Ranges :=Unassigned;
      except  end;
    end;
      

  2.   

    多谢楼上的,我的意思是字段自己是可以选择并导出到EXCEL,输出的字段是根据自己的要求变化的