Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Formateo desde Delphi a Excel (https://www.clubdelphi.com/foros/showthread.php?t=34425)

mayte mtz 09-08-2006 16:03:16

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

kuan-yiu 09-08-2006 16:41:58

Usando el buscador del foro encuentras, por ejemplo esto: Color de fila en excel
Además deberías usar el valor que asignas a la celda, no el contenido de la celda para hacer el "case", sólo por precaución. Lo digo porque a mí, alguna vez me ha dado problemas.

mayte mtz 09-08-2006 17:12:57

Gracias, voy a checarlo

mayte mtz 09-08-2006 23:55:45

ya quedo resuelto
 
Muchas gracias ya logre darle formato con la instrucción que me dieron.


La franja horaria es GMT +2. Ahora son las 05:57:28.

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