PDA

Ver la Versión Completa : Exportar a Excel


jocey
20-11-2007, 20:56:16
Hola mis amigos, tengo unn proyecto que trabaja con una base de datos en Access, como puedo desde access, exportar una tabla de esa base de datos a excel

felipe88
21-11-2007, 18:52:23
Prueba esto a ver si es lo que buscas


procedure ExportarExcel( DataSet:TDataSet ; cNomArchivo: string);
var
Excel: variant; // Aplicación Excel
Libro: variant; // Libro de trabajo
Hoja: variant; // Hoja de cálculo
fila, columna, campo: integer;
marca: string;
begin
Application. CreateForm( Tform, form) ;
With form do
try
Show;
Screen.Cursor := crHourGlass;
// Creamos el objeto de automatización OLE
try
Excel := CreateOleObject( 'Excel.Application');
try
Excel.visible := False;
// Creamos un nuevo libro de trabajo
Excel.SheetsInNewWo rkbook := 1;
Libro := Excel.WorkBooks. Add;
// Obtenemos una referencia a la página del libro
Hoja := Libro.WorkSheets[ 1];
with DataSet do begin
// Recorremos los campos para poner sus nombres como
// encabezado en la primera fila
fila := 1;
columna := 1;
for campo := 0 to FieldCount - 1 do
with Fields[campo] do
begin
if Visible then begin // Sólo se incluyen los campos visibles
Hoja.Cells[fila, columna] := DisplayName;
Inc(columna) ;
end;
end;
Hoja.Rows[fila] .Font.Bold := True;
Screen.Cursor := crHourglass; // cambio a reloj arena
DisableControls;
try
Marca:= Dataset.Bookmark; // guardo donde estaba el dataset
First;
// Recorremos los registros del dataset
while not Eof do begin
Inc(fila); // Cada registro va en una nueva fila
columna := 1;
// Recorremos los campos para ir llenando las celdas de la fila
for campo := 0 to FieldCount - 1 do
with Fields[campo] do begin
if Visible then begin // Sólo se incluyen los campos visibles
if not IsNull then // Si el valor es nulo, no lo asignamos
if DataType = ftString then
Hoja.Cells[fila, columna] := '''' + AsString
else
try
Hoja.Cells[fila, columna] := Value;
except
Hoja.Cells[fila, columna] := DisplayText;
end;
Inc(columna) ;
end;
end;
Next; // Avanzamos al siguiente registro
end;
finally
Dataset.Bookmark := Marca; // dejo el dataset donde estaba
EnableControls;
end;
end;
finally
try Hoja.Cells.Columns. AutoFit; except end; // Autoajuste
Excel.Visible :== True; // Mostramos el Excel
// Grabamos el archivo
Libro.saveas( cNomArchivo) ;
Excel.quit ;
Screen.Cursor := crDefault;
end;
except
Application. MessageBox( 'Excel no se encuentra instalado en este equipo, no se puede exportar','Error' ,mb_OK + mb_IconExclamation) ;
end;
finally
Free;
end;
end;

courtois
13-12-2007, 21:18:46
La, cuando son muchos datos, forma mas veloz podria ser usando ISAM desde una consulta asi


SELECT campos INTO [Excel 8.0;DataBase=Archivo.xls].[Hoja] FROM Tabla


Esto te crea a "archivo.xls" con una "hoja" en la cual estan los datos de la consulta hecha

Saludos

_CALI
28-10-2008, 22:33:28
La, cuando son muchos datos, forma mas veloz podria ser usando ISAM desde una consulta asi


Código SQL [-] (http://www.clubdelphi.com/foros/#)
SELECT campos INTO [Excel 8.0;DataBase=Archivo.xls].[Hoja] FROM Tabla





Esto te crea a "archivo.xls" con una "hoja" en la cual estan los datos de la consulta hecha

Saludos



/// HOLA, PORFAVOR PODRIAS SER MAS ESPECIFICO, ES QUE LA VERDAD ME PARECE MUCHO CODIGO LA RESPUESTA Q AUNQUE ESTE BIEN LA DEL PARTICIPANTE ANTERIOR, EN OTROS PALABRAS DESCRIBE EL PROCEDIMIENTO PARA LOGRAR LO Q DICES


MUCHAS GRACIAS