Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Exportar en excel una celda con una parte negrita y la otra normal. (https://www.clubdelphi.com/foros/showthread.php?t=90054)

jeremiselxi 28-03-2016 20:19:19

Exportar en excel una celda con una parte negrita y la otra normal.
 
Buenas tardes.

Tal como dice el titulo, estoy intentando hacer algo que por mas que he querido no me sale,

Lo único que quiero es exportar un documento en excel y que en este contenga una celda con la primera parte en negrita y la otra parte normal.

Ejemplo de Celda.

------
Caso No 1: Este es un comentario
Caso No 2: Este es otro comentario
------


Adjunto el código que tengo hasta ahora

Código Delphi [-]

procedure TForm_Fondos_fijos_reponibles.btnExportaraexcelClick(Sender: TObject);
var
  Libro : _WORKBOOK;
  Hoja  : _WORKSHEET;
 contar, i,colora:Integer;
//  progreso:real;
Hojainicio:integer;
begin

ShowMessage('Espere un momento');

i:=0;

Libro := Excel.Workbooks.Add(Null, 0);
Hoja  := Libro.Sheets[1] as _WORKSHEET;

i:=i+1;
Hoja.Cells.Item[i,1]:='Caso';
Hoja.Cells.Item[i,2]:='Comentario';
Hoja.Cells.Item[i,3]:='Comentario Para el Informe.';
Hoja.Range['A'+ inttostr(i),'F'+ inttostr(i)].Font.Bold:=true;
Hoja.Range['A'+ inttostr(i),'F'+ inttostr(i)].WrapText:=true;
Hoja.Range['A'+ inttostr(i),'F'+ inttostr(i)].HorizontalAlignment := xlcenter;


//Insertamos todos los registros al excel  y en dbgrid 1
  with DataModule_financiero.query_fondos_fijos_reponibles do
    begin
    first;
    contar:=0;
      while not EOF Do
        begin
        i:=i+1;
        contar:=contar+1;
         
            Hoja.Range['A'+ inttostr(i),'A'+ inttostr(i)].Font.Bold:=true;
            Hoja.Cells.Item[i,1]:='Caso No. ' +inttostr(contar)+ ', ';
            Hoja.Cells.Item[i,2]:=DBGrid1.Fields[8].AsString;

//Aqui necesito unir las dos celdas, y que lo que esté en Hoja.Cells.Item[i,1] salga negrita y lo que esté en Hoja.Cells.Item[i,2] salga normal


        Next;

   end;//while
end;//with

ShowMessage('Exportado con Exito!');

Excel.Visible[0] := true;

end;

Espero haberme explicado bien.

Cualquier inquietud o duda me dejan saber.

Saludos y Dios les bendiga a todos.

roman 28-03-2016 20:44:36

Código Delphi [-]
var
  Excel, Libro, Hoja: OleVariant;

begin
  Excel := ComObj.CreateOleObject('Excel.Application');
  Excel.DisplayAlerts := false;
  Libro := Excel.WorkBooks.Add();
  Hoja := Libro.ActiveSheet;
  Hoja.Cells[1, 1] := 'Caso No 1: Este es un comentario';
  Excel.ActiveCell.Characters(1, 9).Font.FontStyle := 'Negrita';
  Excel.Visible := true;
end;

LineComment Saludos

jeremiselxi 28-03-2016 20:54:45

^\||/^\||/^\||/^\||/^\||/

Solamente puedo decir que excelente hermano.

Muchisimas Gracias.

Saludos desde Republica Dominicana.

jeremiselxi 28-03-2016 22:24:36

Buenas tardes.

Realicé los ajustes de lugar para poder aplicarlo con el componente que utilizo el cual es: "TExcelApplication. ".

Adjunto el código que utilice para mostrar unos comentarios de una base de datos en el formato con que inicié mi pregunta.

Código Delphi [-]
procedure TForm_Fondos_fijos_reponibles.Button1Click(Sender: TObject);
var
 Start, Length: OleVariant;
  Libro : _WORKBOOK;
  Hoja  : _WORKSHEET;
 contar, i,colora:Integer;
Hojainicio:integer;
begin

ShowMessage('Espere un momento');
Libro := Excel.Workbooks.Add(Null, 0);
Hoja  := Libro.Sheets[1] as _WORKSHEET;


i:=0;


//Los comentarios
i:=i+3;
Hoja.Cells.Item[i,1]:='Comentarios Para el Informe.';

//Insertamos todos los registros al excel  y en dbgrid 1
  with DataModule_financiero.query_fondos_fijos_reponibles do
    begin
    first;
    contar:=0;
      while not EOF Do
        begin
        i:=i+1;
        contar:=contar+1;
        Hoja.Cells.Item[i,1]:='Caso No. ' +inttostr(contar)+ ', ' + DBGrid1.Fields[8].AsString;
        Hoja.Range['A'+ inttostr(i),'A'+ inttostr(i)].select;

        //Ponemos en negrita los 11 primeros caracteres
        Start := 1;
        Length := 11;
        Excel.ActiveCell.Characters[Start, Length].Font.FontStyle := 'Bold';

      Next;
   end;//while
end;//with

        Form_esperar.ProgressBar1.Position:= 0;
        Form_esperar.hide;

ShowMessage('Exportado con Exito!');

Excel.Visible[0] := true;

end;


y en resumen, el código utilizado para realizar poner los 11 primeros caracteres en negrita es:

Código Delphi [-]
        //Ponemos en negrita los 11 primeros caracteres
        Start := 1;
        Length := 11;
        Excel.ActiveCell.Characters[Start, Length].Font.FontStyle := 'Bold';

Ya que si utilizo el código

Código Delphi [-]
Excel.ActiveCell.Characters(1, 9).Font.FontStyle := 'Negrita';

Me da error en los paréntesis.

Muchas Gracias Roman porque sin ti no lo hubiera podido hacer.

Te debo una. ^\||/

roman 28-03-2016 22:39:14

Cita:

Empezado por jeremiselxi (Mensaje 503786)
Muchas Gracias Roman porque sin ti no lo hubiera podido hacer.

No hay de qué. En realidad, muchas de las cosas que se pueden hacer con Excel, pueden averiguarse usando los macros de Excel: grabas un macro realizando los pasos necesarios para llevar a cabo la tarea en cuestión y luego revisas el código fuente del macro y te las ingenias para traducir el código VB a Delphi.

Esto fue lo que hice al ver tu pregunta ;)

LineComment Saludos

jeremiselxi 29-03-2016 15:23:51

Cita:

Empezado por roman (Mensaje 503787)
No hay de qué. En realidad, muchas de las cosas que se pueden hacer con Excel, pueden averiguarse usando los macros de Excel: grabas un macro realizando los pasos necesarios para llevar a cabo la tarea en cuestión y luego revisas el código fuente del macro y te las ingenias para traducir el código VB a Delphi.

Esto fue lo que hice al ver tu pregunta ;)

LineComment Saludos

Esta expresión que haré ahora se usa mucho en nuestro país, así que ahí va:

Waaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawwwwwwwwwwwwwwwwwwwwwwwwwwwwww que gran idea.

Creo que me has dado muchas ideas de cosas que aun debo aprender.

Se te agradece mucho hermano.

Saludos. :D

jgutti 29-03-2016 23:02:46

permite exportar a excel 2010 o superior
con Excel := ComObj.CreateOleObject('Excel.Application'); solo puedo exportar de excel 2000 hasta excel 2007

saludos


La franja horaria es GMT +2. Ahora son las 06:44:00.

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