Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Creacion de mas hojas en Excel (https://www.clubdelphi.com/foros/showthread.php?t=29567)

Osvaldo Carlos 25-01-2006 17:34:19

Creacion de mas hojas en Excel
 
Estoy trabajando en D6 y necesito enviar datos a excel pero en un numero mayor de hojas de calculo que te presenta el Excel,(solo 3), estoy usando los componentes que te brinda el D6, para abrir el programa Excel y trasladar de la base de datos a las hojas de Excel, tal vez alguien puede disipar la duda que tengo.

Anabel 25-01-2006 18:41:14

Hola Osvaldo!!!

Espero te sirva lo siguiente:

Necesitas de Delphi:
-TForm (obvio!!)
-TQuery
-SaveDialog
-TExcelapplication

Código Delphi [-]
var
  LCID, LineNumber, h, s: Integer;
  LineString :String; //
  WorkBk : _WorkBook; //  Define a WorkBook
  WorkSheet : _WorkSheet; //  Define a WorkSheet
  IIndex : OleVariant;
begin
  With SaveDialog1 do
  begin
    FileName:= '';
    Filter:='Excel files|*.XLS;All Files|*.*';
    DefaultExt := 'XLS';
    Title:= 'Exportando a Excel';
    IIndex := 1;
    if execute then
    begin
      //Empieza el codigo para crear reporte en Excel
      LCID := GetUserDefaultLCID;
      With ExcelApplication1 do
      begin
        connect;
        try
          visible[LCID]:= True;
          Workbooks.Add(EmptyParam,LCID); //Creamos el libro
          WorkBk := WorkBooks.Item[IIndex];//Asignamos un Indice al libro
          StandardFontSize[LCID] := 8;
          StandardFont[LCID] := 'Arial';
          h := 0;  s := 0;
         With qry do
         begin
             //aqui abres tu query
                 While not Eof do
                 begin
                      s := s + 1;
                     if h < 3 then   // puedes también usar un FOR, yo aproveche el While de qry, ya que queria que cad registro cayera en una hoja diferente de Excel
                     begin
                        h := h+1;
                        WorkSheet := WorkBk.WorkSheets.Get_Item(h) as _WorkSheet;//Seleccionamos una hoja del libro seleccionado
                     end
                     else
                     begin
                        WorkBk.Worksheets.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam,LCID);                
                        WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;//Seleccionamos una hoja del libro seleccionado
                       end;
          Next;
         end   
         end;
          ActiveWorkbook.SaveAs(FileName,xlNormal,'','',false,false,xlNochange,xlUserResolution,False,EmptyPar  am,EmptyParam,LCID);
          //Quit;
        finally
          disconnect;
        end; //try
      end;//ExcelApplication1
    end; //execute
  end;//SaveDialog1

Bye!!!

mak8888 10-02-2006 23:45:26

Una duda con respecto a ese código. Dónde insertas datos en Excel? Es decir, lees datos del qry para insertarlos en la hoja de excel, no? Xo donde haces esa parte, pq no la veo.
Recorres los registros del query y te posicionas en una u otra hoja, no? Donde me pierdo es donde se supone que haces la inserción de los datos del query. Puedes aclararme esta duda por favor.
Gracias de antemano.


La franja horaria es GMT +2. Ahora son las 14:49:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi