Ver Mensaje Individual
  #9  
Antiguo 11-04-2005
lroblesco lroblesco is offline
Miembro
 
Registrado: ene 2005
Ubicación: Baja California Sur, Mexico
Posts: 77
Reputación: 20
lroblesco Va por buen camino
Question

Cita:
Empezado por LordSigma
Mira, yo lo que hago es lo siguiente ... (sin usar componentes y MUY rapido)
Segui los pasos y vas a ver que es facil.
1- Agrega esto en los uses: ComObj

2- Defini dos variables variant con estos nombres en un procedimiento o como campos privados del form.

var Excel, Libro : Variant

3- Al momento de crear la planilla Excel (cuando haces click en un boton por ejemplo) ejecuta este codigo.

// Crea una aplicacion Excel.
Excel := CreateOleObject ('Excel.Application');
// La muestra (vas a ver un Excel como si lu ubieras ejecutado)
Excel.Visible := True;
// Agrega un libro.
Excel.WorkBooks.Add (-4167);
// Le asigna un nombre al libro
Excel.WorkBooks[1].WorkSheets[1].Name := 'Reporte';
// Hace un puntero al libro del Excel.
Libro := Excel.WorkBooks[1].WorkSheets['Reporte'];

4- Haces la consulta en tu base de datos (yo supongo que lo haces con un TQuery) a continuacion del codigo del punto 3.

Query.SQL.Add ('Consulta');
Query.Open;

while not Query.EOF do begin
Libro.Cells [1,1] := Query.FieldByName ('Campo1').AsString;
Libro.Cells [2,1] := Query.FieldByName ('Campo2').AsString;
// ... Asi por cada campo que queres pasar.
// Fijate que uso Libro.Cells [Col, Row] que escribe en cada celda del libro.
// Tambien podes hacer un FOR y acceder a las columnas de la consulta por
// numero y no por nombre para no tener que escribir cada campo.
end;

Query.Close;

Bueno, espero que te halla resultado, contame como te fue ...
Este codigo exporta muy bien. Lo he probado. Solo que necesito saber como guardar ese libro de Excel de manera transparente para el usuario. El nombre del archivo, para mi caso es la fecha del sistema. He probado con Excel.save('nombre_archivo);
pero termina saliendo el dialogo de guardar. Como puedo solucionar esto? gracias por su ayuda.
__________________
No siempre el mas veloz es el que gana la carrera
Responder Con Cita