PDA

Ver la Versión Completa : Guardar archivo excel desde delphi


rruffino
28-12-2004, 04:52:34
Hola amigos. Dispongo de un cuadro de Dialogo para guardar y una planilla en excel.Mi idea es poder utilizar la caja de dialogo para que el usuario indique el nombre y la ruta donde se guardara la planilla y que al hacer click en guardar esta se guarde automaticamente con los datos que ingreso el usuario. Les agradezco mucho su ayuda:)
Saludos, Román

Neftali [Germán.Estévez]
28-12-2004, 09:33:02
Revisa ésta página, ahí tiene descritas las operaciones más importantes que se pueden hacer con una hoja de Excel desde Delphi (abrir, cerrar, grabar,...)

http://www.djpate.freeserve.co.uk/AutoExcl.htm

Otra opción es buscar "Excel Delphi" en los foros, y encontrarás bastantes mensajes sobre el tema.

rruffino
28-12-2004, 17:51:34
Oye amigo, gracias por tu ayuda pero sigo sin poder guardar la planilla quwe creo. Yo lo hago mediante una variable Variant a al cual le asigno la creacion de un objeto ole. Luego le agrego un workbook y lleno el contenido de las celdas VariableOle.Libro.Celdas(x,y). Tengo una caja de dialogo para guardar de la que deberia tomar el nombre que el usuario ingresa y guardar la planilla generada previamente. He probado varias cosas que he encontraqdo en los foros pero no puede dar en la tecla. Todo lo demas sale bien, es decir que la planilla es creada correctamente, y puedo darle nombre con el cual la quiero guardar, pero lamentablemente no puedo guardarla.-
Espero puedas ayudarme;)

Neftali [Germán.Estévez]
29-12-2004, 10:20:40
Pon el código delphi que utilizas, así podemos echarle un vistazo y revisarlo.

rruffino
29-12-2004, 14:10:36
Bueno, tal como pediste te pongo el codigo a ver si puedes darme una mano. Espero puedas ayudarme y desde ya mil gracias.-;)

procedure TForm_excel.BitBtn_bajarClick(Sender: TObject);
var
Excel, Libro: Variant;
i: integer;
Nombre: string;
begin
try
Guardar_planilla.Execute;
if (Guardar_planilla.FileName<>'') then
begin
Excel:=CreateOleObject('Excel.Application');
Excel.Visible := True;
Nombre:=Guardar_planilla.FileName;
Excel.DisplayAlerts:=false;

//Comienzo a llenar las celdas
Excel.WorkBooks.Add();
Excel.WorkBooks[1].WorkSheets[1].Name := 'Reporte';
Libro := Excel.WorkBooks[1].WorkSheets['Reporte'];
DM.IBQuery_cob.SQL.Clear;
DM.IBQuery_cob.SQL.Add('select * from cobranza where periodo='+intToStr(DM.IBDataSet_periodoID_PERIODO.Value)+'order by fecha');
DM.IBQuery_cob.Open;
DM.IBQuery_cob.First;
i:=1;
while not (DM.IBQuery_cob.Eof) do
begin
Libro.Cells [i,1] := DM.IBQuery_cobFECHA.Value;
Libro.Cells [i,2] := DM.IBQuery_cobCONCEPTO.Value;
i:=i+1;
DM.IBQuery_cob.Next;
end;
DM.IBQuery_cob.Close;
//Acá es donde salta el error de que no soporta este metodo pero no hallo otro
Excel.SaveAs(Nombre,Null,Null,Null,false,false,xlNoChange,xlUserResolution,false,Null,Null,0);
end;
except
Excel.Quit;
showmessage('No se pudo crear el Objecto Excel.');
raise;
end;
end;

Neftali [Germán.Estévez]
29-12-2004, 16:39:42
..Espero puedas ayudarme y desde ya mil gracias.


...
//Acá es donde salta el error
Excel.SaveAs(Nombre,Null,Null,Null,false,false,xlNoChange,xlUserResolution,false,Null,Null,0);

En lugar de la línea que te da el error usa simplemente:


Libro.SaveAs(NombreNuevo);

rruffino
03-01-2005, 21:19:54
Neftali, gracias por la ayuda que me has dado, en ralidad se me soluciono el problema.:p
Román

MARLON1
01-02-2008, 18:20:32
Bueno, tal como pediste te pongo el codigo a ver si puedes darme una mano. Espero puedas ayudarme y desde ya mil gracias.-;)

procedure TForm_excel.BitBtn_bajarClick(Sender: TObject);
var
Excel, Libro: Variant;
i: integer;
Nombre: string;
begin
try
Guardar_planilla.Execute;
if (Guardar_planilla.FileName<>'') then
begin
Excel:=CreateOleObject('Excel.Application');
Excel.Visible := True;
Nombre:=Guardar_planilla.FileName;
Excel.DisplayAlerts:=false;

//Comienzo a llenar las celdas
Excel.WorkBooks.Add();
Excel.WorkBooks[1].WorkSheets[1].Name := 'Reporte';
Libro := Excel.WorkBooks[1].WorkSheets['Reporte'];
DM.IBQuery_cob.SQL.Clear;
DM.IBQuery_cob.SQL.Add('select * from cobranza where periodo='+intToStr(DM.IBDataSet_periodoID_PERIODO.Value)+'order by fecha');
DM.IBQuery_cob.Open;
DM.IBQuery_cob.First;
i:=1;
while not (DM.IBQuery_cob.Eof) do
begin
Libro.Cells [i,1] := DM.IBQuery_cobFECHA.Value;
Libro.Cells [i,2] := DM.IBQuery_cobCONCEPTO.Value;
i:=i+1;
DM.IBQuery_cob.Next;
end;
DM.IBQuery_cob.Close;
//Acá es donde salta el error de que no soporta este metodo pero no hallo otro
Excel.SaveAs(Nombre,Null,Null,Null,false,false,xlNoChange,xlUserResolution,false,Null,Null,0);
end;
except
Excel.Quit;
showmessage('No se pudo crear el Objecto Excel.');
raise;
end;
end;

hola:
me podrias ayudar? quiero hacer lo mismo que pero no tengo idea de como hacerlo, hasta ahora con la ayuda del foro solo puedo cargar datos de un archivo .xls en un dbgrid en mi aplicacion, pero lo que quiero hacer es que los datos que tengo en el archivo .xls se almacenen en la tabla cliente que ya tiene definidos los campos (clavecliente,nombre,dir,tel,...), espero ke me puedas hechar una mano uso delphi 6 y sql. estoy utilizando ADO, MIL GRACIAS