PDA

Ver la Versión Completa : Como guardar filex xlsx con FileStream


Soa Pelaez
23-11-2018, 21:22:27
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/foros/showthread.php?t=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ó.


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 (http://www.clubdelphi.com/foros/showthread.php?t=92034&highlight=xlsx), 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 (http://www.clubdelphi.com/foros/showthread.php?p=518997&langid=1) 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
¿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.