Bonjour,
Le code suivant est utilisé pour exporter les données d'un StringGrid et non d'un DBGrid. Mais dans le principe, nous devons avoir le même type d'exportation. A adapter à ton code.
var
xls, wb: OLEVariant;
arrData, Range: Variant;
RowCount, ColCount, i, j: Integer;
begin
{create variant array where we''ll copy our data}
RowCount := StringGrid1.RowCount;
ColCount := StringGrid1.ColCount;
arrData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);
{fill array}
for i := 1 to RowCount do
for j := 1 to ColCount do
arrData[i, j] := StringGrid1.Cells[j-1, i-1];
label1.caption:=StringGrid1.Cells[2, 1];
{initialize an instance of Excel}
xls := CreateOLEObject('Excel.Application');
{create workbook}
wb := xls.Workbooks.Add;
{retrieve a range where data must be placed}
Range := wb.WorkSheets[1].Range[wb.WorkSheets[1].Cells[1, 1],
wb.WorkSheets[1].Cells[RowCount, ColCount]];
{copy data from allocated variant array}
Range.Value := arrData;
{show Excel with our data}
xls.Visible := True;
end;
Ne pas oublier d'inclure dans les uses OLEAuto
Ca marche trés bien pour Excel2010 et Delphi7
Cordialement.