Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Bajar Información a Archivos de Excel (https://www.clubdelphi.com/foros/showthread.php?t=69403)

carlos gonzalez 16-08-2010 16:43:48

Bajar Información a Archivos de Excel
 
Hola amigos, Alguien sabe si existe algun componete para bajar Información a Archivos De Excel pero sin que la PC tenga instalado el Excel O El Office, el Sistema lo tengo desarrollado en Delphi 7, Si alguien sabe si esto es posible se los voy agradecer bastatante que lo compartan con migo.

Saludos...

Su amigo Charlesss

Mystery 16-08-2010 17:22:00

Cita:

Empezado por carlos gonzalez (Mensaje 373635)
Hola amigos, Alguien sabe si existe algun componete para bajar Información a Archivos De Excel pero sin que la PC tenga instalado el Excel O El Office, el Sistema lo tengo desarrollado en Delphi 7, Si alguien sabe si esto es posible se los voy agradecer bastatante que lo compartan con migo.

Saludos...

Su amigo Charlesss

bueno no entiendo el termino bajar informacion.. te refieres a descargar informacion de internet o a salvar cierta informacion en un fichero excel...??
si es salvar por ahi andaban unos componentes para salvar a excel... creo que los hizo clubdelphi.com.ar... no estoy seguro ademas por ejemplo yo uso este... codigo que salvas lo que esta en un DBGrid...

Código Delphi [-]
procedure exportarGridExcel(mGrid: tdbgrid);
var
  rangoExcel : Excel2000.range;
  i, fila : integer;
  mMarcador : Tbookmarkstr;
  mTabla : tdataset;
  aplicacionExcel : TExcelApplication;
begin
  aplicacionExcel := TExcelApplication.Create(nil);
  mTabla := mGrid.datasource.dataset;
  aplicacionExcel.Visible[0] := true;
  aplicacionExcel.workbooks.add(NULL, 0);
  rangoExcel := aplicacionExcel.ActiveCell;
  for i:=0 to  GDATA.Columns.Count-1 do
  begin
    if GDATA.Columns[i].Visible then
     begin
       rangoExcel.Value := mTabla.Fields[i].DisplayLabel;
       rangoExcel := rangoExcel.Next;
     end;
  end;
  rangoExcel.AutoFormat(10, NULL, NULL, NULL, NULL, NULL, NULL);
  mTabla.DisableControls;
  try
    mMarcador := mTabla.Bookmark;
    try
      mTabla.First;
      fila := 2;
      while not mTabla.Eof do
      begin
        rangoExcel := aplicacionExcel.Range['A' + inttostr(fila), 'A' + inttostr(fila)];
        for i:=0 to  GDATA.Columns.Count-1 do
        begin
          try
            if GDATA.Columns[i].Visible then
            begin
              rangoExcel.Value :=GDATA.Fields[i].asstring;
              rangoExcel := rangoExcel.Next;
            end;
          except
          end;
        end;
        mTabla.Next;
        Inc(fila);
      end;
      finally
        mTabla.Bookmark := mMarcador;
      end;
    finally
      mTabla.EnableControls;
    end;

 end;

eso es todo espero que te sirva... OK sin mas

yo

cloayza 17-08-2010 15:46:36

Este codigo lo encontre un dia navegando por la web...

No recuerdo al autor...Si alguien lo sabe seria bueno que lo escribiera...

Código Delphi [-]
procedure TForm1.BitBtn5Click(Sender: TObject);
const
     CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0);
     CXlsEof: array[0..1] of Word = ($0A, 00);
     CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
     CXlsNumber: array[0..4] of Word = ($203, 14, 0, 0, 0);
     CXlsRk: array[0..4] of Word = ($27E, 10, 0, 0, 0);
var
  FStream: TFileStream;
  I, J: Integer;

      procedure XlsBeginStream(XlsStream: TStream; const BuildNumber: Word);
      begin
           CXlsBof[4] := BuildNumber;
           XlsStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
      end;

      procedure XlsEndStream(XlsStream: TStream);
      begin
           XlsStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));
      end;

      procedure XlsWriteCellRk(XlsStream: TStream; const ACol, ARow: Word; const AValue: Integer);
      var
         V: Integer;
      begin
           CXlsRk[2] := ARow;
           CXlsRk[3] := ACol;
           XlsStream.WriteBuffer(CXlsRk, SizeOf(CXlsRk));
           V := (AValue shl 2) or 2;
           XlsStream.WriteBuffer(V, 4);
      end;

      procedure XlsWriteCellNumber(XlsStream: TStream; const ACol, ARow: Word; const AValue: Double);
      begin
           CXlsNumber[2] := ARow;
           CXlsNumber[3] := ACol;
           XlsStream.WriteBuffer(CXlsNumber, SizeOf(CXlsNumber));
           XlsStream.WriteBuffer(AValue, 8);
      end;

      procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word; const AValue: string);
      var
        L: Word;
      begin
           L := Length(AValue);
           CXlsLabel[1] := 8 + L;
           CXlsLabel[2] := ARow;
           CXlsLabel[3] := ACol;
           CXlsLabel[5] := L;
           XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
           XlsStream.WriteBuffer(Pointer(AValue)^, L);
      end;

begin
     FStream := TFileStream.Create('D:\sample.xls', fmCreate);
     try
        XlsBeginStream(FStream, 0);
        for I := 0 to 99 do
          for J := 0 to 99 do
          begin
               //XlsWriteCellNumber(FStream, I, J, 34.34);
               // XlsWriteCellRk(FStream, I, J, 3434);
               XlsWriteCellLabel(FStream, I, J, Format('Cell: %d,%d', [I, J]));
          end;
        XlsEndStream(FStream);
     finally
       FStream.Free;
     end;

end;

Saludos

delphi.com.ar 17-08-2010 16:30:29

Cita:

Empezado por carlos gonzalez (Mensaje 373635)
Hola amigos, Alguien sabe si existe algun componete para bajar Información a Archivos De Excel pero sin que la PC tenga instalado el Excel O El Office...

Yo he desarrollado un juego de componentes que hacen exactamente esta tarea, se llaman Export Suite, vienen con código y son totalmente gratuitos.

Saludos!

rrf 18-08-2010 00:46:45

Hola.

Cloayza, ese código que incluyes viene de un archivo comprimido que se incluyó en este hilo del foro.

También se incluye el enlace desde el que se obtuvo el código original (el que tu aportaste es una adaptación para que fácilmente se pueda ver como funciona). Está en Creating excel file without OLE, en las páginas de descarga de Embarcadero.

Saludos.

Ramón.

cloayza 20-08-2010 14:41:18

Amigo rrf muchas gracias por el aporte...

No recordaba de donde lo saque...Nuevamente gracias.

Saludos


La franja horaria es GMT +2. Ahora son las 20:55:23.

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