PDA

Ver la Versión Completa : Resaltar celda de excel


voldemmor
08-05-2008, 16:20:54
hola amigos del foro espero que podais ayudar.

procedure TfrmActas.Button1Click(Sender: TObject);
var
i,j:Integer;
excel:Variant;
begin
try
Excel := CreateOleObject('Excel.Application');
except
Excel.Quit;
showmessage('No se pudo crear el Objecto Excel o se produjo algún error.');
raise;
end;
//***** Asignamos el archivo a abrir *****//
Excel.Workbooks.Open('c:\ejemplo.xls');
excel.cells[1,3].value:='Listado de Alumnos '+ AnioActual;//renglon 5 columna 1
excel.cells[2,3].value:='Especialidad :'+cbxEspecialidades.Text;
excel.cells[3,3].value:='Curso :'+cbxCursos.Text;
excel.cells[6,2].value:='Codigo';
excel.cells[6,3].value:='Nombre y Apellido del Alumno';
excel.rows[6].font.bold := true;
with DataSource1.DataSet do
begin
First;
j:= 7;
while not Eof do
begin
if Fields[0].Visible then
begin
excel.cells[j,2].value := Fields[0].AsString;
excel.cells[j,3].value := fields[1].AsString +' '+ Fields[2].AsString;
inc(j);
end;
Next;
end;
excel.cells[4,3].value:='Total de alumnos :'+IntToStr(j-7);
end;
excel.cells.columns.autofit;
excel.visible:=true;
end;

con este codigo paso datos a un documento excel que lo tengo externamente, aun no he podido crear uno nuevo desde delphi, cada vez que lo requiero.

La duda

Quiero resaltar y remarcar los bordes de una celda de este documento excel, dado ciertas condiciones, claro esta:D, espero me podais orientar con esta duda, Si es posible con las instrucciones o que me digan donde puedo encontrar algun manual sobre esto, porque no lo he podido hallar


Gracias de antemano

ContraVeneno
08-05-2008, 17:40:05
Uses Excel2000
....

var
Excel, Libro: Variant;
...

Excel:=CreateOleObject('Excel.Application');
Excel.Visible := False;
Excel.DisplayAlerts:= False;
Excel.WorkBooks.Add;
Excel.WorkBooks[1].WorkSheets[1].Name := 'Reporte';
Libro := Excel.WorkBooks[1].WorkSheets['Reporte'];
Libro.Cells[1,1]:='Reporte';
.....
Libro.Cells[i,4].Font.Bold:=True;
Libro.Range['A'+inttostr(i-1), 'E'+inttostr(i-1)].Merge;
Libro.Range['A'+inttostr(i-1), 'E'+inttostr(i-1)].Borders[xlBottom].weight := xlMedium;
Libro.Range['A'+inttostr(i+1), 'E'+inttostr(i+1)].Merge;
Libro.Range['A'+inttostr(i+1), 'E'+inttostr(i+1)].Borders[xlTop].weight := xlMedium;

Excel.Visible:=true;

//Excel.Quit;
Libro:=Unassigned;
Excel := Unassigned;




Con eso creas un archivo de excel nuevo y ahí viene el ejemplo de como poner bordes.

voldemmor
08-05-2008, 17:48:12
Gracias contraveneno. Lo pruebo y te aviso.

Otra duda. Me podrias decir como puedo activar la vista previa de excel, directamente desde mi codigo en delphi

BlueSteel
08-05-2008, 17:59:21
Gracias contraveneno. Lo pruebo y te aviso.

Otra duda. Me podrias decir como puedo activar la vista previa de excel, directamente desde mi codigo en delphi


Hola, y lo que necesitas es que te abra el archivo una vez creado o verlo en una ventana de tu aplicación....

Para visualizar un archivo dentro de mi aplicación he utilizado el componente TWebBrowser (no me acuerdo de que paleta lo saque..)

y para pasar el archivo solo tienes que usar esto


WebBrowser.Navigate(Ruta_del_archivo_y_nombre_de_archivo);


Salu2

ContraVeneno
08-05-2008, 19:09:16
Bueno, eso haría que vieras el archivo dentro de tu aplicación. Pero con la instrucción "Excel.Visible" ya muestras el archivo, no dentro de tu aplicación, pero ya se muestra.

Y para lanzar la vista previa de excel, pues no se como se haga. Aunque debo decir que no veo la necesidad de hacer eso. Ya le muestras el archivo al usuario, si el lo quiere imprimir, que lo haga, si no, simplemente cierra excel.

voldemmor
08-05-2008, 19:34:49
Tienes razon , en parte, ya que le muestro el archivo de excel y el puede hacer lo que requira.

Pero: Ay de usuarios a usuarios, y creo yo que seria una buena obcion el activar excel en en vista previa.

PD: y despues de todo no es malo aprender algo nuevo.

ContraVeneno
08-05-2008, 20:19:25
Pues si encuentras como mandar llamar la vista previa, nos avisas, para aprender todos como hacerle. :D

voldemmor
08-05-2008, 20:42:20
excel.range['a1:d1'].HorizontalAlignment := 'xlHAlignCenter';
excel.range['a1:d1'].VerticalAlignment := 'xlVAlignBottom';


esto se supone que debe alinear el texto.ç

Pero ne da un error, me dice que no se puede asignar el parametro.

Lo estoy aciendo bien o no. me podrian decir cual es mi error o si me falta algo en las cabeceras.
Solo tengo en las cabecera ComObj

roman
08-05-2008, 21:02:11
como mandar llamar la vista previa


var
ExcelApp: OleVariant;
WorkBook: OLeVariant;

begin
ExcelApp := ComObj.CreateOleObject('Excel.Application');
WorkBook := ExcelApp.WorkBooks.Open('C:\ruta\al\archivo.xls');
ExcelApp.Visible := true;
WorkBook.PrintPreview;
end;



excel.range['a1:d1'].HorizontalAlignment := 'xlHAlignCenter';
excel.range['a1:d1'].VerticalAlignment := 'xlVAlignBottom';


esto se supone que debe alinear el texto.


Los valores no se pasan como cadenas de caracteres pues son constantes numéricas. Debes incluir la unidad WordXP, o Word2000 o Word97, según la versión que uses.

// Saludos

voldemmor
09-05-2008, 02:47:10
Los valores no se pasan como cadenas de caracteres pues son constantes numéricas. Debes incluir la unidad WordXP, o Word2000 o Word97, según la versión que uses.



// Saludos

Gracia.
Ese era mi problema ya que las pase tal como me la postearon pero no me reconocia el compilador asi que lo puse con cadena de caracteres a ver que pasaba:D:D. Prueba y Herror:p.

Gracias..
Y manos a la obra

voldemmor
11-05-2008, 23:49:56
Gracias amigos.

Ya se ha solucionado todo.

Bueno He usado el Codigo de contraveneno para generar un nuevo documento excel.
La manera que indica roman para activar la vista previa desde codigo es correcta.
Y tenian razon me faltaban las referencias a las unidades (Uses ComObj, Excel2000), para que me funcionen las parametros.

Aun no pruebo la manera de visualizar que sugerio Blue
Gracias a todos por la ayuda