Cita:
Empezado por alej.villa
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.
