PDA

Ver la Versión Completa : Ejecutar Archivo en Excel


MiKloSS
19-12-2008, 20:58:16
Que tal compañeros, mi problema es el siguiente, estoy exportando unos registros a excel y todo perfecto, lo unico que me falta es que se abra el archivo creado en excel cuando se termine la exportacion, a ver si me explique, la exportacion ya la hace bien, lo unico que falta es que se ejecute el excel para poder ver el archivo exportado, espero que alguien me pueda ayudar... salu2

Caro
19-12-2008, 21:18:51
Hola, nose como estas exportando a excel, pero si es con los componetes de la paleta server o mediante OLE, ambos tienen la propiedad Visible que si lo pones en True te mostrara el documento de excel creado.



//paleta server
ExcelApplication1.Visible[0] := True;

//OLE
Excel.Visible := True;


o también puedes utilizar ShellExecute:


ShellExecute(Handle,nil,PChar('C:\file.xls'),'','',SW_SHOW);


Saluditos

MiKloSS
19-12-2008, 21:53:52
Este es el codigo que utilizo para exportar, ya he intentado con :


//paleta server
ExcelApplication1.Visible[0] := True;

//OLE
Excel.Visible := True;

y ninguno me funciono, a lo mejor no puse bien la linea de codigo, podrias decirme en que parte se pone lo de visible... salu2

procedure TF_CatProductos.Exportar;
var
Libro,Excel:variant;
LineNumber, LCID : Integer;
LineString : string;
fila, columna: Integer;
valorCelda: String;
letra: String;
arreglo:array[1..40] of integer;
xband:boolean;
begin
with SaveDialog1 do
begin
FileName :='';
Filter:= 'Excel files|*.XLS;All Files|*.*';
DefaultExt := 'XLS';
Title := 'Exporting to Excel';
if execute then
begin
LineNumber := 0;
LCID := GetUserDefaultLCID;
with ExcelApplication1 do
begin
connect;
try
visible[LCID] := false;
Workbooks.Add(EmptyParam,LCID);
with Range['A1','I1']do
begin
HorizontalAlignment := xlCENTER;
VerticalAlignment := xlCENTER;
Wraptext := false;
Orientation := 0;
ShrinkTofit := false;
MergeCells := false;
Font.Bold := true;
FONT.Size:=11;
end;
//COLOCO EN ENCABEZADO DE LAS COLUMNAS
Range['A1','I1'].Value2 := VarArrayOf(['PRODUCTO','CÓDIGO','DESCRIPCION','GRUPO','G.CTRL','EXISTENCIA','P.PRECIO','DESCUENTO','COMISION']);
RANGE['A1','I1'].ColumnWidth := VarArrayOf([12,10,40,11,10,11,10,11,10]);
Range['A1','I1'].Font.Bold := True;
with range ['A1','A3000'] do
begin
numberformat:='0';
end;
QRY_BSARTICULOS.Close;
if bandera=false then
QRY_BSARTICULOS.sql.text:='select * from articulos where existencia <> 0 order by descripcion';
if bandera=true then
QRY_BSARTICULOS.sql.text:='select * from articulos order by descripcion';

QRY_BSARTICULOS.Open;


QRY_BSARTICULOS.First;
BARRA.Visible:=true;
barra.Max:=QRY_BSARTICULOS.RecordCount;
barra.Visible:=true;
columna:=2;
// FOR columna:= 2 to QRY_BSARTICULOS.RecordCount-1 do
while not QRY_BSARTICULOS.Eof do
begin
Cells.Item[columna,1].value:=QRY_BSARTICULOSID_ARTICULO.Value;
cells.Item[columna,2].value:=QRY_BSARTICULOSAMECOP.Value;
cells.Item[columna,3].value:=QRY_BSARTICULOSDESCRIPCION.Value;
cells.Item[columna,4].value:=QRY_BSARTICULOSID_LINEA.Value;
cells.Item[columna,5].value:=QRY_BSARTICULOSGRUPO_C.Value;
cells.Item[columna,6].value:=QRY_BSARTICULOSEXISTENCIA.Value;
cells.Item[columna,7].value:=QRY_BSARTICULOSPRECIO_PUBLICO.Value;
cells.Item[columna,8].value:=QRY_BSARTICULOSDESCUENTO.Value;
cells.Item[columna,9].value:=QRY_BSARTICULOSCOMISION.Value;
columna:=columna+1;
barra.Position:=BARRA.Position+1;
QRY_BSARTICULOS.Next;
end;
ActiveWorkbook.SaveAs(FileName,xlNormal,'','',False,False,xlNoChange,xlUserResolution,False,EmptyPar am,EmptyParam,LCID,0);
Quit;
finally
disconnect;
end;///try
end;//with ExcelApplication1 do
end;//if execute then
end;//with SaveDialog1 do
barra.Visible:=false;
end;

Caro
20-12-2008, 00:34:54
Hola de nuevo, no lo ves porque en tu codigo primero lo ocultas despues llenas en tu documento, lo grabas y lo cierras. Como ya esta grabado puedes utilizar la saegunda forma que te he puesto con ShellExecute.

Saluditos

MiKloSS
20-12-2008, 01:17:20
Muchas gracias compañer@ Caro, me diste la idea, el problema era que cerraba el documento, lo que hice fue quitar el Quit y ahi puse la linea
ExcelApplication1.Visible[0] := True;
y ya me funciono tal como keria, ya que me guarda y me muestra el documento en excel :D:D:D:D:D, muy agradecido... salu2