Bonjour �
Je m�int�resse au C++ et aux stats et � la mod�lisation financi�re.
Je souhaite utiliser Excel 2007 comme source de s�ries historiques (de prix � ) , je pourrai alors manipuler ces donn�es avec C++ (j�utilise Visual C++ Express 2010). (NON ! je ne souhaite pas faire autrement ;-) )
J�ai lu diff�rentes choses sur le sujet et d�autres pas tout � fait sur le sujet (les livres de Steve Dalton sur les add-ins et autres d�veloppements pour Excel). Mais je me pose toujours des tas de questions.
Je ne souhaite pas compliquer dans un premier, en cr�ant l�interface COM.
Je pense lire mes donn�es dans Excel et les importer sous forme de vectors.
Le fichier Excel que je souhaite lire, pour la d�mo s�appelle : C:\Users\�douard\Desktop\test.xlsx
Son contenu, 3 colonnes (� partir de �A1�):
2 6 6
2 2 4
3 4 4
5 4 5
3 4 1
6 1 2
2 3 8
9 5 8
1 7 7
Voici le d�but de mon code (le tout d�but pourra �tre utile � d�autres � ) :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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 #include <iostream> #include <fstream> #include<stdio.h> #include <cstdlib> #include <vector> using namespace std; // Microsoft Office Objects #import \ "C:\Program Files\Common Files\Microsoft Shared\OFFICE12\mso.dll" \ rename("DocumentProperties", "DocumentPropertiesXL") \ rename("RGB", "RBGXL") using namespace Office; // Microsoft VBA Objects #import \ "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\vbe6ext.olb" using namespace VBIDE; // Excel Application Objects #import \ "C:\Program Files\Microsoft Office\OFFICE12\EXCEL.EXE" \ rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") \ rename("DocumentProperties", "DocumentPropertiesXL") \ rename("ReplaceText", "ReplaceTextXL") \ rename("CopyFile", "CopyFileXL") \ exclude("IFont", "IPicture") no_dual_interfaces // convertir les ranges excel en vectors vector<double>ExcelRangeTovector(Excel::RangePtr pRange) { // obtenir le colonnes et les lignes utilisées int columns=pRange->Columns->Count; int rows=pRange->Rows->Count; // création du vecteur à la bonne taille vector<double> v(columns*rows); // boucle pour remplir le vecteur int index=0; for (int r=1; r<=rows; r++) { for (int c=1; c<=columns; c++) { // remplir le vector v[index++]=(((Excel::RangePtr) pRange->Item[r][c])->Value).dblVal; } } // obtenir le vector return v; }
A partir de ceci, qui rassemble les id�es tir�es de plusieurs ressources sur internet.
Je me demande dans quelle mesure (jusqu�� o� ?) il faut pointer dans ma feuille Excel. Je ne sais pas non plus s�il est n�cessaire d� �activer� . Enfin, je ne parviens pas � bien utiliser la classe ExcelRangeTovector �crite au-dessus.
Le d�but de ma main est comme ceci :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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 int main () { //try // { //initialisation interface COM CoInitialize(NULL); //Pointeur vers Excel 2007 Excel::_ApplicationPtr XL; //Session d�excel XL.CreateInstance(L"Excel.Application"); //Excel visible ? XL->Visible = false; // pointeur vers le fichier Excel d�sir� XL->Workbooks->Open(L"C:\\Users\\�douard\\Desktop\\test.xlsx"); //pointeur vers la premi�re worksheet Excel::_WorksheetPtr pSheet = XL->Sheets->Item[1]; // Activation de la 1�re feuille pSheet->Activate(); // Pointeur vers les cellules sur la feuille active (ici, la 1�re) Excel::RangePtr pRange = pSheet->Cells; pSheet->Activate(); // obtenir le vector dans c++ ??? �. C�EST L� QUE JE NE PARVIENS PAS � MES FINS !!! COMMENT OBTENIR EFFECTIVEMENT LES CELLULES EXCEL DANS UN VECTEUR ??? COMMENT AFFICHER LE VECTEUR � L��CRAN (COMMENT UTILISER COUT ? ? // Quitter l�application xl->Quit(); } //si erreur, le faire savoir ! catch(_com_error &error) } }
Quelqu�un aurait-il des id�es ?
Quelqu�un pourrait-il expliquer p�dagogiqument ?![]()
Merci
Edouard.
Partager