Exporter donn�es excel en un format array
Bonjour,
Je travaille avec Visual Studio 2005 et excel 20003.
J'ai une s�rie de donn�es Excel que je voudrais passer en param�tres � une matrice dans un programme C++.
J'ai trouv� une aide sur http://support.microsoft.com/kb/q186122
Ca se passe assez bien sauf que lorsque vient le moment d'ajouter la librairie "excel.h" .
Le compilateur me retourne plusieurs centaines d'erreur.
J'ai fait quelques tests en prenant seulement certaines classes (dont la class qui g�n�re l'objet worksheet) contenu dans la librairy et la le nombre d'erreur diminue de mani�re cons�quente. Ce qui me fait dire que c'est l'ajout de la librairy "excel.h" qui pose probl�me.
J'ai trouv� une autre fa�on d'int�grer excel avec la directive #import. En passant par la directive import le nombre d'erreur diminue, mais �a ne compile toujours pas. En tatonnant avec "rename", le nombre d'erreurs diminue. Mais il en reste beaucoup. Je ne sais pas o� se trouvent les noms qui posent probl�me.
Est- ce que quelqu'un � une id�e.
Code:
1 2 3 4
|
#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE11\mso.dll" rename("RGB", "MSRGB")
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" raw_interfaces_only, rename("Reference", "ignorethis"), rename("VBE", "testVBE")
#import "C:\Program Files\Microsoft Office\OFFICE11\excel.exe" exclude("IFont", "IPicture") rename("RGB", "ignorethis"), rename("DialogBox", "ignorethis"), rename("VBE", "testVBE"), rename("ReplaceText", "EReplaceText"), rename("CopyFile","ECopyFile"), rename("FindText", "EFindText"), rename("NoPrompt", "ENoPrompt") |
Voici par ailleurs, une autre partie du code qui pourrait �tre utile.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
void CAutoProject_07_04_2008Dlg::OnBnClickedRun()
{
//OLE Variant for optional.
ColeVariant VOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
_Application objApp;
_Workbook objBook;
Workbooks objBooks;
Worksheets objSheets;
_Worksheet objSheet;
Range objRange;
Variant ret;
objApp.CreateDispatch("Excel.Application");
objBooks=objApp.GetWorkbooks();
objBook=objBooks.Open("H:Test.xls",VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional);
objSheets=objBook.GetWorksheets();
objSheet=objSheets.GetItem(COleVaraint("A1"),COleVariant("C8"));
ret=objRange.GetValue();
// create and pass parameters to the SAFEARRAY from the VARIANT ret
COleSafeArray sa(ret);
long lNumRows;
long lNumCols;
sa.GetUBound(1,&lNumRows);
sa.GetUBound(2,&lNumCols);
//Display the elements in the SafeArray
long index[2];
VARIANT val;
int r,c;
TRACE("Contents of SafeArray\n");
TRACE("======================\n\t");
for (c=1;c<=lNumCols;c++)
{
TRACE("t\tCol %d",c);
}
TRACE("\n");
for(r=1;r<=lNumCols;c++)
{
index[0]=r;
index[1]=c;
sa.GetElement(index,&val);
switch(val.vt)
{
case VT_R8:
{
TRACE("\t\t%1.2f",val.dblVal);
break;
}
case VT_BSTR:
{
TRACE("\t\t\%s",(CString)val.bstrVal);
break;
}
case VT_EMPTY:
{
TRACE("\t\<empty>");
break;
}
}
}
TRACE("\n"); |
J'imagine une solution qui consisterait � importer les objets que m'int�ressent un par un, mais je ne suis pas sur de pouvoir en faire la liste. Je pr�f�rerais importer brutalement toute la librairy.
Merci d'avance pour votre aide.