Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Pasar datos a excel (https://www.clubdelphi.com/foros/showthread.php?t=60113)

jafera 20-09-2008 12:00:59

Pasar datos a excel
 
Buenos días, quisiera saber si alguien me puede echar una mano con un problema que tengo, debo pasar datos de firebird a excel, a traves de una aplicacion delphi 6, pero me interesaria colocar los datos en unas celdas determinadas de la hoja, es decir dato 1 a la celda A4, dato 2 a la celda C4, así hasta el EOF del fichero.
No se como llamar a estas celdas directamente. La hoja excel ya existe y no se debe crear de nuevo.
Muchas gracias
Josep

toni.vi 20-09-2008 15:23:00

//Dataset son los registros a pasar a excel
//Datos son los campos que queremos pasar y en que posicion
// Valor es la posicion
// Descripcion es el campo a pasar
//Excel Exportacion
//------------------------------------------------------------------------------
procedure TFormLoadExcel.RutEnviarExcel(DataSet, Datos: TDataSet; vFileName, vHoja: String);
var
i, j : Integer;
vCol : Integer;

ExcelApp, ExcelLibro, ExcelHoja : Variant;

begin

try
ExcelApp := CreateOleObject('Excel.Application');
ExcelLibro := ExcelApp.Workbooks.open(vFileName); //abro un excel vacio solo con los titulos y el formato que quiero
ExcelHoja := ExcelLibro.Worksheets[vHOJA]; //nombre de la hoja

with DataSet do
begin

j := StrToIntDef(edPrimeraFila.text,1);

First;
while not EOF do
begin

Datos.First;
While not Datos.Eof do
begin
vCol := Datos.FieldByname('Valor').AsInteger;
vCampo := Datos.FieldByname('Descripcion').AsString;

ExcelHoja.Cells(j, vCol) := FieldByName(Datos.FieldByname('Descripcion').AsString).AsString;
if (FieldByName(vCampo) is TFloatField) then ExcelHoja.Cells(j, vCol) := FieldByName(vCampo).AsFloat;
if (FieldByName(vCampo) is TIntegerField) then ExcelHoja.Cells(j, vCol) := FieldByName(vCampo).AsInteger;
if (FieldByName(vCampo) is TDateField) then ExcelHoja.Cells(j, vCol) := FieldByName(vCampo).AsDateTime;
if (FieldByName(vCampo) is TBooleanField) then ExcelHoja.Cells(j, vCol) := FieldByName(vCampo).AsBoolean;

Datos.Next;
end;
Next;

Inc(j);
end;
end;

ExcelApp.ActiveSheet.SaveAs(vFileName);
except
ExcelApp.Quit;
end;

ExcelApp.Quit;

end;

jafera 22-09-2008 08:12:41

Excel
 
Gracias Toni, voy a ponerlo en practica enseguida ya te cuento
Josep

vroa74 04-10-2008 02:00:35

Hay otra forma mas secillas de hacerlo..
con los componentes max...
yo tenia ese problema ya lo solucion, gracias a kos compañeros de clubdelphi: Neftali, Faust, [maeyanes].

muchas gracias....


La franja horaria es GMT +2. Ahora son las 05:16:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi