Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ejecutar Archivo en Excel (https://www.clubdelphi.com/foros/showthread.php?t=62388)

MiKloSS 19-12-2008 20:58:16

Ejecutar Archivo en Excel [Solucionado]
 
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.

Código Delphi [-]
 
 //paleta server
  ExcelApplication1.Visible[0] := True;
  
 //OLE
  Excel.Visible := True;

o también puedes utilizar ShellExecute:

Código Delphi [-]
 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

Código:

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,EmptyParam,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
Código:

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


La franja horaria es GMT +2. Ahora son las 10:48:01.

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