Ver Mensaje Individual
  #1  
Antiguo 09-08-2006
mayte mtz mayte mtz is offline
Miembro
 
Registrado: sep 2005
Posts: 31
Reputación: 0
mayte mtz Va por buen camino
Formateo desde Delphi a Excel

Buenos días:

Tengo un dbgrid que paso a excel con el sgte código:



Código Delphi [-]
procedure TfrmAnexosConta.CopyExcel(grid:TwwDbGrid);
var
 WorkBk : _WorkBook;     //  Define un WorkBook
 WorkSheet : _WorkSheet; //  Define un WorkSheet
 I, J, K, R, C : Integer;
 IIndex : OleVariant;
 TabGrid : Variant;
begin
   IIndex  := 1;
   R       := Grid.DataSource.DataSet.RecordCount+1;
   C       := Grid.GetColCount-1;
   TabGrid := VarArrayCreate([0,(R - 1),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,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,J] := ' ' else
       TabGrid[I,J] := grid.Fields[j].AsVariant; // llena el arreglo con datos
    if (I > 0) then grid.DataSource.DataSet.Next;
    Inc(I);
  until I > (R - 1);
    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.Name       := Nombre;                                      // Customiza la hoja
    XLApp.Visible[0]     := True;                                        // Muestra Excel
    XLApp.Disconnect;                                                    // Desconecta el Server
    inc(IIndex);
    TabGrid := Unassigned;                                               // Desasigna el arreglo de variants
end;






Pero necesito que si el contenido de una de las celdas que envio esta entre un rango de valores, que rellene la celda con un color o bien enviar el color de la letra en un color determinado.

Intente con la sgte instrucción pero no me ha resultado.


Código Delphi [-]
nVen := worksheet.Cells.item[I,J].value ;
case  nVen  of
           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;
        end;




Me pueden decir en donde puedo encontrar algo que me ayude a resolver esto?

Gracias

Mayte Mtz

Última edición por roman fecha: 09-08-2006 a las 17:47:12. Razón: Corregir etiqueta [delphi] para mayor legibilidad
Responder Con Cita