Traitement des fichiers EXCELS en visual C++6 sans MFC
De Nasredine Evry, le 24 juillet 2005
Je suis un passionné de langage C, alors que mes compétences sont limitées.
Tout d'abord une petite question: Comment et dans quel endroit faut-il stocker un mot de passe ?
A ce jour je commence réellement à me poser des questions sur mon niveau de débutant en c++(Visual C++6).
J'ai une fonction très simple, elle ouvre un fichier *.xls ensuite elle récupère la valeur d'une cellule.
Pour qu'elle soit plus efficace je cherche à évoluer vers la lecture/écriture par des variables (exemple:ma_colonne, un champs ou àpartir d'une position) et récupérer les contenues dans des structure(ou un tableau).
Aperçue de ma fonction :
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
|
/******************************************************/
/* */
/* automation EXCEL */
/* */
/******************************************************/
#include <windows.h>
#include <stdio.h>
#import "C:\Program Files\Fichiers communs\Microsoft Shared\Office10\MSO.DLL" \
no_namespace rename("DocumentProperties","DocumentPropertiesXL")
#import "C:\Program Files\Fichiers communs\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" \
no_namespace
#import <C:\Program Files\Microsoft Office\Office10\EXCEL.EXE> \
rename("DialogBox","DialogBoxXLs") \
rename("RGB","RGBXLs") \
rename("DocumentProperties", "DocumentPropertiesXLs") \
no_dual_interfaces
#pragma warning(default: 4192)
#pragma warning(default: 4146)
using namespace Excel; //sinon préfixer les objets par Excel::
#define VT _ariant_t
#define BT _bstr_t
struct InitOle {
InitOle() { CoInitialize(NULL); }
~InitOle() { CoUninitialize(); }
} _init_InitOle_; // Global Instance to force load/unload of OLE
int main(int argc, char*argv[])
{
_ApplicationPtr pXlsApp;
_WorkbookPtr pBook; //pBook = pXlsApp->Workbooks->Add
//(static_cast<long>(Excel::xlWorksheet));
// Create the workbook
_WorksheetPtr pFeuille;
_ChartPtr pChart;
char nomf[256]; //nom et chemin de fichier Excel
printf("donnez le nom de fichier *.xls\n");
gets(nomf);
HRESULT hr = pXlsApp.CreateInstance(L"Excel.Application");
if( ! hr ) //accès au classeur
{
pXlsApp -> PutVisible(1); //0 pour invisible
pBook = pXlsApp -> Workbooks -> Open(nomf);
pFeuille = pXlsApp -> ActiveSheet;
long n = pXlsApp -> Range["D21"] -> Value;//lire une seule cellule ?
printf("%d\n", n);
pFeuille -> SaveAs("d:\\test2.xls");
pBook -> Close(); //ferme le classeur
}
else
{
MessageBox( NULL,
"d:\a.xls non trouvé...\t\t\n\nà corriger le chemin\n ",
"Erreur", MB_ICONEXCLAMATION );
return 0;
}
if( pXlsApp ) pXlsApp -> Quit(); //Quitte l'application
return 0;
} |
C'est ce n'est pas trop lourd j'aimerai bien connaître une méthode pour utilisée les valeurs retournées pour construire un graphe.