mmm los traes de un DBGrid, en ese caso se puede entender que los datos que quieres exportar vienen de una base de datos no?
Qué te parece este código.
Código:
//declaracion de variables
Variant XL,v0,v1,v2,v3;
//abres excel
XL=Variant::CreateObject("excel.application");
//la abres con la ventana visivle o si tiene false la ventana es invisible
XL.OlePropertySet("Visible", true);
//abre el archivo C:\\mi_archivo.xls, se puede "SaveAs" en lugar de "Open" para crear en lugar de abrir
XL.OlePropertyGet("Workbooks").OleProcedure("Open", "C:\\mi_archivo.xls");
//abres la hoja1 en este caso llamada reporte
v0=XL.OlePropertyGet("Sheets", "Reporte");
v1=v0.OlePropertyGet("Cells");
//aqui pones el nombre de las columnas que vas usar de la BD
String columnas[6]={"col1", "col2", "col3", "col4", "col5", "col6"};
//qq es un query ya con una consulta hecha
qq->First();
for (int i = 1; i <= qq->RecordCount; i++) {
for (int ii = 0; ii < 6; ii++) {
//se va escribiendo dato por dato
v1.OlePropertyGet("Cells", i+4, ii+1).OlePropertySet("Value",
qq->FieldByName(columnas[ii])->AsString.t_str());
}
qq->Next();
}
XL.OlePropertySet("DisplayAlerts", false);
XL.OleProcedure("Save");
XL=Unassigned;
MessageBoxA(Handle, "ya esta", "", MB_ICONINFORMATION