Salut,
En MFC c'est très facile, on utilise automation et COM,
il faut adapter cela en C.
Je ne l'ai jamais fait mais en gros :
1 : Utiliser les typeLib avec #import
ex : Microsoft Excel 11.0 Object Library <1.5>
#import "C:\\chemin\\typeLib.tbl"
// Excel propose des interfaces comme : _Application
MFC : Crée un wrapper pour l'objet _Application
CApplication m_app;
En C utiliser :
QueryInterface() sur _Application (il faut le CLSID)
LPDISPATCH pDisp;
LPUNKNOWN pUnk;
CLSID clsid;
::CLSIDFromProgID(L"Excel.Application.11", &clsid);
// Instance d'Excell en cours
if(::GetActiveObject(clsid, NULL, &pUnk) == S_OK)
{
if( pUnk->QueryInterface(IID_IDispatch, (void**) &pDisp) == S_OK )
{
// Une instance d'Excel a été trouvé
pUnk->Release();
}
}
else
{
// MFC
if( !m_app.CreateDispatch("Excel.Application.11") )
{
// Erreur
}
else
{
// Une instance d'Excel a été crée
}
}
// MFC
CWnd* pWnd = CWnd::FindWindow("XLMAIN", NULL);
if( pWnd )
{
pWnd->ShowWindow(SW_SHOWNORMAL);
pWnd->UpdateWindow();
pWnd->BringWindowToTop();
}
m_app.put_SheetsInNewWorkbook(1);
Donc il faut trouver les équivalences en C.
Bonne continuation.