Delphi - Como pasar datos a excell

 
Vista:

Como pasar datos a excell

Publicado por Judit (1 intervención) el 13/06/2006 17:39:46
Hola, espero que me puedan ayudar con la siguiente duda necesito pasar una serie de datos que muestro en un dbgrid a una planilla excell por efecto de reporte,
estos datos son tanto como número y caracteres como nombres, fechas entre otros..
me gustaria saber como realizar dicha movida de un dbgrid a una planilla excell..

de antemano muchas gracias y salud2....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como pasar datos a excell

Publicado por maturin (1 intervención) el 13/06/2006 18:11:34
Te paso una funcion que tengo para meter datos en una plantilla de excel, espero que te sirva, lo de sacar los datos del dbgrid supongo que no te sera un problema, un saludo

procedure TMan_Carpetas.BitBtn5Click(Sender: TObject);
const
xlCellTypeLastCell = $0000000B;
var
XLApp: OLEVariant;
begin
XLApp := CreateOleObject('Excel.Application');
try
// Hide Excel
XLApp.Visible := False;

// Open the Workbook
XLApp.Workbooks.Open('c:\Tabla.xls');
XLApp.Cells.Item[3, 2] := ArticulosNombre.Value;
XLApp.Cells.Item[3, 8] := DateToStr(ArticulosFecha.Value);
XLApp.Cells.Item[4, 3] := ArticulosDescripcion.Value;
XLApp.Cells.Item[4, 8] := ArticulosCantidad.Value;
finally
{ // Quit Excel
if not VarIsEmpty(XLApp) then
begin
// XLApp.DisplayAlerts := False;
XLApp.Quit;
XLAPP := Unassigned;
Sheet := Unassigned;
end;}
XLApp.Visible := True;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como pasar datos a excell

Publicado por Camacho (4 intervenciones) el 19/06/2006 07:25:55
mira yo encontre este codigo en la web pero se utiliza con un stringgrid no se si funcione un dbgrid.

//-----------------
procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word;
const AValue: string);
var
L: Word;
const
{$J+}
CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
{$J-}
begin
L := Length(AValue);
CXlsLabel[1] := 8 + L;
CXlsLabel[2] := ARow;
CXlsLabel[3] := ACol;
CXlsLabel[5] := L;
XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
XlsStream.WriteBuffer(Pointer(AValue)^, L);
end;
//--------------------
function SaveAsExcelFile(AGrid: TStringGrid; AFileName: string): Boolean;
const
{$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-}
CXlsEof: array[0..1] of Word = ($0A, 00);
var
FStream: TFileStream;
I, J: Integer;
begin
FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite);
try
CXlsBof[4] := 0;
FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
for i := 0 to AGrid.ColCount - 1 do
for j := 0 to AGrid.RowCount - 1 do
XlsWriteCellLabel(FStream, I, J, AGrid.cells[i, j]);
FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));
Result := True;
finally
FStream.Free;
end;
end;
//----------y lo ejecutas dentro de un boton o algo asi-----------------------------

if savedialog1.Execute then
SaveAsExcelFile(StringGrid1,savedialog1.FileName+'.xls');

intentalo espero que te funcione
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar