Delphi - problemas con excel

 
Vista:

problemas con excel

Publicado por denish (57 intervenciones) el 20/06/2006 01:24:29
Alguien podría ayudarme....

Tengo un poblemilla con excel, y despues de haber probado infinidad de ejemplos sigo sin poder hacerlo.

Quiero volcar los datos desde una tabla en MySql con delphi 7 a excel 2003 pero no se como hacerlo si alguien pudiese ayudarme explicandome un ejemplo completo estaria muy agradecido, pk eske no consigo sacar este problema.

Espero vuestras noticias, un saludo un loco de la informatica....
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:solucion

Publicado por Camacho (4 intervenciones) el 20/06/2006 19:14:27
mira yo lo he hecho primero relleno un stringgrid con los datos de la tabla mysql (no me gustan los controles DBgrid se tiene poco control sobre ellos) entonces llamo estas funciones:

{$R *.dfm} //<------las escribes en seguida de esta instruccion que ya viene por default
//-----------------
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;

lo kmandas a llamar dentro de un boton o lo que quieras asi:

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

ojo que debes manejar un savedialog para guardarlo con el nombre que quieras en el lugar que quieras

espero te sirva.
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:solucion

Publicado por felp (18 intervenciones) el 27/06/2006 17:46:23
mira tengo el mismo problema, no me reconoce la procedure XlsWriteCellLabel, ademas que nunca eh trabajado stringgril, como puedo pasar los datos de una tquery para llenar el stringgrill.. gracias..
y lo otro son los problemas con las procedures que no me las reconoce..
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