Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2006
mayte mtz mayte mtz is offline
Miembro
 
Registrado: sep 2005
Posts: 31
Poder: 0
mayte mtz Va por buen camino
Repetir columnas a la izq. al imprimir

Buen día:

Tengo un programa en delphi5 que manda a imprimir un reporte de excel a la impresora, pero como mi reporte tiene muchas columnas , deseo que se imprima en cada hoja , la columna # 1.


Es posible hacer esto, me pueden ayudar ?

Gracias
Responder Con Cita
  #2  
Antiguo 26-09-2006
Avatar de aom
aom aom is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 106
Poder: 22
aom Va por buen camino
Hola Mayte,
primero, creo que esta pregunta no pertenece a este foro...

Como envías el reporte a excel? Con una consulta SQL?
Si es así, haz que en la consulta selecciones siempre la primera columna y así la envíe.

Saludos
__________________
Más se perdió en la guerra... y volvieron cantando
Responder Con Cita
  #3  
Antiguo 26-09-2006
mayte mtz mayte mtz is offline
Miembro
 
Registrado: sep 2005
Posts: 31
Poder: 0
mayte mtz Va por buen camino
Gracias por contestar, lo envio de la sgte manera


Código Delphi [-]
procedure TFrmSemaforo.CopyExcel(grid:TwwDbGrid);
var
 WorkBk : _WorkBook;     //  Define un WorkBook
 WorkSheet : _WorkSheet; //  Define un WorkSheet
 I, J, K, R, C : Integer;
 nVen          : Integer;
 IIndex        : OleVariant;
 TabGrid       : Variant;
begin
   IIndex  := 1;
   R       := Grid.DataSource.DataSet.RecordCount+5;
   C       := Grid.GetColCount-1;
  // TabGrid := VarArrayCreate([0,(R - 1),0,(C - 1)],varVariant);
   TabGrid := VarArrayCreate([0,(R +10),0,(C - 1)],varVariant);
   I       := 0;
   k       := 0;
   grid.DataSource.DataSet.First;
   //  llena el arreglo de variants
   repeat
   for J := 0 to (C - 1) do
    if (I = 0) then begin
       TabGrid[I+4,J] := grid.Fields[K].DisplayName; //pone los nombres de los campos en la primera linea
       inc(K);
    end else
    if grid.Fields[j].IsNull then
       TabGrid[I+4,J] := ' ' else
       TabGrid[I+4,J] := grid.Fields[j].AsVariant; // llena el arreglo con datos
    if (I > 0) then grid.DataSource.DataSet.Next;
    Inc(I);
  until (I) > (R-5);
    XLApp                := TExcelApplication.Create(nil);
    XLApp.ConnectKind    := (ckNewInstance);
    XLApp.Connect;                                                       // se conecta al server TExcelApplication
    XLApp.WorkBooks.Add(OleVariant(xlWBATWorksheet),IIndex);             // agrega WorkBooks a ExcelApplication
    WorkBk               := XLApp.WorkBooks.Item[IIndex];                // selecciona el primer WorkBook
    WorkSheet            := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet; // Define la primer hoja
    Worksheet.Range['A1',Worksheet.Cells.Item[R,C]].Value := TabGrid;    // asigna el arreglo de variants al variant asociado con la hoja
//    Worksheet.Range['A1',Worksheet.Cells.Item[R,C]].Borders.LineStyle := xlContinuous;    // asigna borders a los renglones y columnas de la hoja
    // insertando titulo  a hoja de Excel
    WorkSheet.Cells.item[1,1].Font.Bold      := true;
    WorkSheet.Cells.item[1,1].Font.Size      := 12;
    WorkSheet.Cells.item[1,1].Font.Underline := 2;
    WorkSheet.Cells.item[1,1].Value          := 'Semaforo de Mantenimientos';
    WorkSheet.Cells.item[2,1].Font.Bold      := true;
    WorkSheet.Cells.item[2,1].Font.Size      := 12;
    WorkSheet.Cells.item[2,1].Font.Underline := 2;
    WorkSheet.Cells.item[2,1].Value          := FormatDateTime('mmmm/dd/yyyy hh:mm AM/PM',Now);
    WorkSheet.Cells.item[3,1].Font.Bold      := true;
    WorkSheet.Cells.item[3,1].Font.Size      := 12;
    WorkSheet.Cells.item[3,1].Font.Underline := 2;
    WorkSheet.Cells.item[3,1].Value          := 'Division ' + eDivIni.Text;
 
    //Worksheet.Range['A1',Worksheet.Cells.Item[R,C]].Interior.ColorIndex := 3;    // asigna relleno a todas las celdas en rojo

    //        worksheet.cells.VerticalAlignment
   // esto pinta toda la celda de negro
   // WorkSheet.Cells[row,col].Interior.ColorIndex := 01; // 00: blanco, 20: aguamarina...
  // esto lo centra
  // Rango.HorizontalAlignment := xlHAlignCenter;
  //    Rango.Value := Query1.Fields[i].DisplayText;
  //Excel.Range['F5'].Value := '=SUM(A1:A2)';
  if  rbtr3.checked = False Then Begin  // tipo de reporte para validacion no seleccionado
    // R es # de renglones
    // C es # de columnas
    I       := 5;              // incian renglones en 5
    repeat                    // para barrer todos los renglones
      for J := 1 to (C ) do // para barrer todas la columnas J del renlgon I
      Begin
        Worksheet.Cells.Item[I,J].Borders.LineStyle := xlContinuous;    // asigna borders a la celda
        // cambiar a bold los encabezados de las columnas
        if (I = 5) then Begin
          worksheet.Cells.item[I,J].Font.Bold         := True;
          if J >= 2 then
            if  rbtr2.checked = True then // si y solo si se selecciono tipos de mtto como columna
              Worksheet.Cells.Item[I,J].Orientation := 90;    // asigna orientación  vertical a la celda
        end
        else Begin
          if J >= 2 then
           if  j < c then Begin
            nVen := worksheet.Cells.item[I,J].value ;
            if nVen = 0 then worksheet.Cells.item[I,J].Value := ' ';
            if nVen >= strtoint(ev1.text) then
            begin
              if nVen <= strtoint(ev2.text) then
//                worksheet.Cells.Item[I,J].Interior.ColorIndex := 0; // blanco
            end;
            if nVen >= strtoint(ev3.text) then
            begin
              if nVen <= strtoint(ev4.text) then
                worksheet.Cells.Item[I,J].Interior.ColorIndex := 6; // amarillo
            end;
            if nVen > strtoint(ev5.text) then Begin
              worksheet.Cells.item[I,J].Font.Bold           := True;
              worksheet.Cells.item[I,J].Font.Color          := clWhite;
              worksheet.Cells.Item[I,J].Interior.ColorIndex := 3; // rojo
            end;
            {
            case  nVen  of
              0       :  worksheet.Cells.item[I,J].Value := ' ';
              90..99  :  worksheet.Cells.Item[I,J].Interior.ColorIndex := 16; // gray
              100..110:  worksheet.Cells.Item[I,J].Interior.ColorIndex := 6; // amarillo
             111..999:  worksheet.Cells.Item[I,J].Interior.ColorIndex := 3; // rojo
              // cambia color de la letra
              //90..99:    worksheet.Cells.item[I,J].Font.Color := clgreen;
              //100..110:  worksheet.Cells.item[I,J].Font.Color := clblue;
              //111..999:  worksheet.Cells.item[I,J].Font.Color := clred;
              // cambia color de relleno de la celda
            end; // case
            }
          end;  // if J >= 2
        end;   // if I = 5
      end;    // For J= 1
    Inc(I);
    until I > (R);  // para barrer todos los renglones
    Worksheet.Range['A1',Worksheet.Cells.Item[R,C]].Columns.Autofit;    // asigna autofit a las columnas
    // Insertando pie de pagina
    workSheet.Cells.item[R+2,3].Value               := 'Simbologia';
    if rbv4.checked = True then Begin
      worksheet.Cells.Item[R+3,2].Interior.ColorIndex := 3; // rojo
      workSheet.Cells.item[R+3,3].Value               := 'Mantenimientos arriba del '+ ev5.text+' % de Vencimiento';
      worksheet.Cells.Item[R+4,2].Interior.ColorIndex := 6; // yellow
      workSheet.Cells.item[R+4,3].Value               := 'Mantenimientos entre el '+ev3.text + ' % y el '+ ev4.text+ ' % de Vencimiento';
//      worksheet.Cells.Item[R+5,2].Interior.ColorIndex := 3; // red
      workSheet.Cells.item[R+5,3].Value               := 'Mantenimientos entre el '+ev1.text + ' % y el '+ ev2.text+ ' % de Vencimiento';
    end;
    if rbv3.checked = True then Begin
      worksheet.Cells.Item[R+3,2].Interior.ColorIndex := 3; // rojo
      workSheet.Cells.item[R+3,3].Value               := 'Mantenimientos arriba del '+ ev5.text+' % de Vencimiento';
    end;
    if rbv2.checked = True then Begin
      worksheet.Cells.Item[R+3,2].Interior.ColorIndex := 6; // yellow
      workSheet.Cells.item[R+3,3].Value               := 'Mantenimientos entre el '+ev3.text + ' % y el '+ ev4.text+ ' % de Vencimiento';
    end;
    if rbv1.checked = True then Begin
//      worksheet.Cells.Item[R+3,2].Interior.ColorIndex := 0; // blanco
      workSheet.Cells.item[R+3,3].Value               := 'Mantenimientos entre el '+ev1.text + ' % y el '+ ev2.text+ ' % de Vencimiento';
    end;

  end
  else  // rbtr3.checked = False
    Worksheet.Range['A1',Worksheet.Cells.Item[R,C]].Columns.Autofit;    // asigna autofit a las columnas
    //WorkSheet.Name     := Nombre;                                      // Customiza la hoja
    if c > 22 then begin//si columnas es mayor a 22 cambiar orientacion de hoja
       worksheet.PageSetup.Orientation := 2;
    end;
//       worksheet.
    if Tipo_R = 'E'  then // quiere decir que se va abrir el excel
      XLApp.Visible[0]     := True;                                        // Muestra Excel
    if Tipo_R = 'P'  then  begin // quiere decir que se va abrir el printpreview
      //worksheet.PrintOut(from,To_,Copies,Preview,ActivePrinter,PrintoFile,Collate,IcId);
      //  worksheet.PageSetup.LeftHeader := 'amarillo';
       
      worksheet.PrintOut(null,null,1,null,null,null,null,0);
    end;
    XLApp.Disconnect;                                                    // Desconecta el Server
    inc(IIndex);
    TabGrid := Unassigned;                                               // Desasigna el arreglo de variants
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Imprimir columnas y filar por separado en FastReport phantasia80 Impresión 0 25-09-2005 14:07:00
Imprimir Columnas y luego Filas ??? BlueSteel Impresión 3 21-04-2005 22:15:41
Imprimir columnas seleccionadas de un DBGrid jdangosto Impresión 1 07-10-2004 12:20:12
Imprimir columnas a la misma distancia ctronx Impresión 3 26-07-2004 02:16:58
nesecito repetir titulos de columnas (header) de un reporte orfeo Impresión 2 01-06-2003 23:23:58


La franja horaria es GMT +2. Ahora son las 09:10:54.


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
Copyright 1996-2007 Club Delphi