Ver Mensaje Individual
  #17  
Antiguo 31-07-2011
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 646
Reputación: 23
mRoman Va por buen camino
Cita:
Empezado por alej.villa Ver Mensaje
Supongo que el query tiene campos para cada campo de datos, lo que pasa es que no puedo ver el codigo fuente de ese programa, te recuerdo que ese programa ya esta implementado y es una herramienta del programa que permite hacer un filtrado de datos para exportarlos a excel
Que tal Alej.villa

Mira parece ser que con la información que nos brindas no te podemos ayudar demasiado. Dejame si entiendo algo.

Tu quieres IMPORTAR algunos datos del archivo XLS que te genera el otro sistema, bien yo he exportado datos a archivos XLS usando un componente llamado TXLSExportFile. Lo que no he hecho es IMPORTAR desde un archivo de Excel a mi aplicación, pero lo que si hago es lo siguiente:

Uso plantillas de Excel y desde Delphi descargo los datos en el archivo XLS, el cual ya tiene un formato predefinido....bordes, negritas, tamaño de la fuente, etc. y lo grabo con otro nombre....talvez algo asi te pueda servir haciendo esto mismo pero al reves....

te paso algo de codigo.

Código Delphi [-]
procedure TfrmOpNumeralia.BitBtn1Click(Sender: TObject);
var
   XLS : TXLSFile;
   Libro, Excel:VAriant;
   cArchivo:String;
   nHoja,I,J,nCont,Lin,nBloque:Integer;
   Archivos_SQL:Array[0..13] of string;
begin
    Archivos_SQL[0] :=ExtractFilePath(Application.ExeName)+'\SQLS\num_lec_mas_venden_sub.sql';
En el codigo anterior declaro XLS como TXLSFile....

El el siguiente inicializo la variable XLS y le creo la clase
Código Delphi [-]
    if Application.MessageBox('Confirma la ejecucion del proceso','Confirmacion',mb_OkCancel+mb_IconQuestion)=idOk then
    begin
         nBloque:=0;
         XLS:=TXLSFile.Create;

Y aqui abro la plantilla de Excel e inicializo la variable nHoja a 0, ya que esta me servira para ir brincando las hojas del archivo de excel y vaciar datos.
Código Delphi [-]
         XLS.OpenFile(ExtractFilePath(Application.ExeName)+'\Plantillas\Numeralia_2010.xlt');
         nHoja:=0;

Un ejemplo de como vaciar datos a las celdas.
Código Delphi [-]
         xls.Workbook.Sheets[nHoja].Cells[3,0].Value:='Numeralia:'+cbxMes.Items[cbxMes.itemindex]+' '+mskAnio.Text;
         xls.Workbook.Sheets[nHoja].Cells[1,0].Value:=qryPAS.fieldbyname('descripcion').AsString;

Y despues lleno el archivo de Excel con un Query...componente TQuery

Código Delphi [-]
         For i:=0 to J do
         begin
              qryDatos.SQL.LoadFromFile(Archivos_SQL[i]);
              qryDatos.Close;
              qryDatos.ParamByName('MES').AsInteger:=cbxMes.ItemIndex+1;
              qryDatos.ParamByName('ANIO').AsString:=mskAnio.Text;
              qryDatos.Open;
              qryDatos.First;
              While not(qryDatos.Eof) do
              begin
                   With xls.Workbook.Sheets[nHoja] do
                   begin
                      Cells[Lin,1].Value := qryDatos.FieldByName('LECHER').AsInteger;
                      Cells[Lin,2].Value := qryDatos.FieldByName('NOMBRELECH').AsString;
                      Cells[Lin,3].Value := qryDatos.FieldByName('CANTIDAD').AsFloat;
                      Lin:=Lin+1;
                      pBar.Position:=pBar.Position+pBar.Step;
                      qryDatos.Next;
                   end;
              end;
              Lin:=Lin+4;
              nBloque:=nBloque+1;
              if nBloque=4 then
              begin
                 nHoja:=nHoja+1;
                 Lin:=8;
                 nBloque:=0;
              end;
         end;

Espero haberte ayudado.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita