Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como guardar filex xlsx con FileStream (https://www.clubdelphi.com/foros/showthread.php?t=93588)

Soa Pelaez 23-11-2018 21:22:27

Como guardar filex xlsx con FileStream
 
Buen día compañer@s

Tengo el siguiente código que me exporta correctamente un archivo a xls, lo que ya requiero es que me exporte o me guarde el archivo en xlsx. Obtenido del foro en el siguiente enlace http://clubdelpra.cluster003.ovh.net...32736&langid=5 en el proyecto "Grabar a Excel B.zip " subido por "rrf" en este proyecto en el "Crear informe realista" se crea por medio de un TFileStream un archivo de excel con extensión .xls, me funciona perfectamente, pero requiero guardar otro archivo con la extensión .xlsx, intente modificar solo el final del nombre con la nueva extensión pero no me funcionó.

Código Delphi [-]
procedure TMenu1.Button1Click(Sender: TObject);
var
  aa : string ;
  FStream: TFileStream;
  I, J: Integer;
begin

  aa := ExtractFilePath( Application.ExeName ) + trim ( Edit3.Text ) + '.xlsx' ;

  FStream := TFileStream.Create( aa, fmCreate);
//  FStream := TFileStream.Create('J:\e.xls', fmCreate);
  try

    XlsBeginStream(FStream, 0);

    for I := 1 to strtoint ( Edit2.Text ) do       // Columnas
      for J := 1 to strtoint ( Edit1.Text ) do     // Filas
      begin

        case RadioGroup1.ItemIndex of
          0: XlsWriteCellNumber(FStream, I, J, 34.34);
          1: XlsWriteCellRk(FStream, I, J, 3434);
          2: XlsWriteCellLabel(FStream, I, J, Format('Cell: %d,%d', [I, J]));
        end;

      end;

    XlsEndStream(FStream);

  finally
    FStream.Free;
  end;


  ShellExecute(Handle,nil, PChar( aa ), '', '',SW_SHOWNORMAL) ;


end;

Alguien puede ayudarme, se lo agradecería.

Casimiro Notevi 24-11-2018 01:19:29

Mira este hilo, a ver si te sirve.

Neftali [Germán.Estévez] 26-11-2018 09:57:52

El problema es que aunque parezca un cambio sin importancia (sólo cambiar la extensión del fichero) en realiz¡dad no lo es.
Realmente lo que tú necesitas es generar un fichero con un formato distinto.

El código que comentas, crear el fichero XLS "a mano" generando la cabecera de forma manual según el formato de los ficheros XLS. Para generar un fichero XLSX de la misma forma, deberías conecer el formato de este tipo y generarlo manualmente de la misma forma. Cosa que no veo fácil.

Hay otra forma de generar los ficheros XLSX desde delphi que es utilizando Automatización. Aquí tienes un ejemplo de TiammatMX de cómo hacerlo.

Soa Pelaez 26-11-2018 14:17:16

La verdad requiero realizar ello con TFileStream y sin tener instalado ningún paquete de office. Igual muchas gracias.

Casimiro Notevi 26-11-2018 14:34:07

¿No te sirve exportarlo a formato .csv?
De ahí puedes leerlo en cualquier otro programa, y si es una hoja de cálculo entonces leerá correctamente las filas y columnas, ya que todas tienen para importar ficheros .csv

Soa Pelaez 26-11-2018 15:56:06

Cita:

Empezado por Casimiro Notevi (Mensaje 529735)
¿No te sirve exportarlo a formato .csv?
De ahí puedes leerlo en cualquier otro programa, y si es una hoja de cálculo entonces leerá correctamente las filas y columnas, ya que todas tienen para importar ficheros .csv

No me sirve así, porque el requerimiento es en formato .xlsx. Igual muchas gracias.


La franja horaria es GMT +2. Ahora son las 13:23:14.

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