Saludos amigos:
Hace unos días hice un pequeño programa donde me exportaba los datos que tenia en un StringGrid hacia un excel, el código tiene la deficiencia que aunque guarde el archivo excel en la carpeta que le indico, primeramente se le muestra al usuario, cosa que quiero corregir, si le cambio en oExcel.OlePropertySet("Visible", (Variant)true); por oExcel.OlePropertySet("Visible", (Variant)false); se me guarda como quiero, pero sin embargo cuando mando a ejecutarlo no me abre. Otra cosa que me gustaría lograr es en ves de especificarle una ruta predefinida donde se guardaran estos datos darle la posibilidad al usuario que la escoja, me podrían decir que componente podría utilizar para esto?.
Acá le dejo el código de lo que hice utilizando recursos de la Internet.
Variant oExcel, oWkBook, oSheet, oCell;
try {
oExcel = Variant::CreateObject("Excel.Application");
oExcel.OlePropertySet("Visible", (Variant)true);
}
catch (Exception &exception) {
MessageBox(0,"Probablemente Microsoft Excel no se encuentre instalado", "Error de comunicacion", MB_OK | MB_ICONERROR);
return;
}
oWkBook = oExcel.OlePropertyGet("WorkBooks");
oWkBook.OleProcedure("Add");
oSheet = oWkBook.OlePropertyGet("Item",(Variant)1);
oWkBook = oSheet.OlePropertyGet("Worksheets");
oWkBook.OlePropertyGet("Item", (Variant)1).OlePropertySet("Name","Calorias");
oSheet = oWkBook.OlePropertyGet("Item",1);
for (int iI = 0; iI < StringGrid1->RowCount; iI++)
for (int iJ = 0; iJ < StringGrid1->ColCount; iJ++)
oSheet.OlePropertyGet("Cells").OlePropertyGet("Ite m",iI + 1,iJ + 1).OlePropertySet("Value",(Variant)(WideString)Str ingGrid1->Cells[iJ][iI]);
oExcel.OlePropertySet("DisplayAlerts",false);
oExcel.OlePropertyGet("Workbooks").OlePropertyGet( "Item",1).OleProcedure("SaveAs","C:\\Damian\\Calor ias.xls");
//Excel.OleProcedure("Quit");
oExcel = Unassigned;