Automation de excel entierement en win32 et sous forme de classe

Soyez le premier à donner votre avis sur cette source.

Vue 13 240 fois - Téléchargée 1 218 fois

Description

En fait il s'agit de la suite de http://www.cppfrance.com/codes/AUTOMATISER-EXCEL-SANS-MFC-NI-IMPORT_30147.aspx
mais avec plus de fonctions et surtout plus de commentaires.
J'ai du controler excel pour mes besoins et je suis parti de cette source pour debuter puis petit a petit des fonctions se sont rajoutées dessus, avec de la logique et un bon moteur de recherche il est assez facile de continuer.
Pour les utilisateurs des MFCs c'est réinventer la roue mais perso meme si je le voulais, je ne pourrais pas les utiliser (non livrées avec vc 2005 express).
J'aurais pu utiliser une syntaxe plus logique (comme celle des MFCs) mais j'ai rajouté les fonctions au fur et a mesure de mes besoins.

Source / Exemple :


MyExcel Excel;

	//lance une nouvelle instance de excel
	Excel.NewExcel();
	//le rend visible
	Excel.SetVisible(true);

	//ouvre un nouveau carnet
	//Excel.AddWorkbook();

	//charge un fichier existant
	Excel.Open(TruePath("\\test.xls"));

	//selectionne la premiere feuille
	Excel.GetWorksheet(1);

	//on rempli certaines cases
	Excel.SetData("A2:B3","ABCD");
	Excel.SetData("A1","Titre");

	//on selectionne une zone
	Excel.SelectRange("A1");
	//on y applique des effets
	Excel.SetFont("ARIAL",true,false,20);
	Excel.SetColor(RGB(255,0,0),RGB(0,255,0));

	//changement du nom de la feuille
	Excel.SetWoksheetName("test");

	//pour eviter le message de confirmation a la sortie
	//Excel.SetSave(true);

	//sauvegarde du nouveau fichier modifié
	Excel.SaveAs("C:\\output.xls");
	//et on quitte
	Excel.Quit();

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mardi 5 avril 2011
Statut
Membre
Dernière intervention
5 avril 2011

Bonjour,

J'ai repris ce code qui est très utile et j'ai rajouté quelques fonctions, notamment pour formater les cellules.
Maintenant, j'aimerais pouvoir inserer une ligne dans un fichier mais je ne trouve pas la commande à fournir à la fonction Autowrap.
Si quelqu'un l'a déjà fait ou a une petite idée....

Merci d'avance !
A bientôt !
Messages postés
17
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
28 janvier 2011

Bonjour,

Une idée pour appeler une Macro excel depuis ce code ?

bool MyExcel::RunMacro(char* macro) {
return false;
}

bool RunMacro(char *);//ne marche pas

Tres bon exemple ;)
Messages postés
1
Date d'inscription
vendredi 12 février 2010
Statut
Membre
Dernière intervention
19 novembre 2010

Bonjour,

Le programme fonctionne très bien chez moi. Cependant, si j'essaye de lire une valeur provenant d'une feuille excel "Protégée", le programme plante. J'imagine que des modifications apportées à la fonction Open de la classe MyExcel pourrait corriger le problème. Quelqu'un a-t-il une idée ? Merci de votre aide.
Messages postés
4
Date d'inscription
vendredi 6 juillet 2012
Statut
Membre
Dernière intervention
15 juin 2011

Bonjour, vos réponses m'ont bien aidé mais j'ai un autre problème, je veux par exemple ouvrir un fichier, récupérer certaines données pour ensuite les copier dans un autre fichier excel.
J'arrive à récupérer les données mais pas à les copier dans le deuxième fichier.

Voici un code simple pour montrer mon problème :

#include "windows.h"
#include "libexcel/excel.h"

void test1()
{
MyExcel Excel;
Excel.NewExcel();
Excel.SetVisible(true);
Excel.Open("C:\\Documents and Settings\\Administrateur\\Bureau\\test.xls");
Excel.Quit();
Excel.~MyExcel();
}

void test2()
{
MyExcel Excel;
Excel.NewExcel();
Excel.SetVisible(false);
Excel.Open("C:\\Documents and Settings\\Administrateur\\Bureau\\test.xls");
Excel.Quit();
Excel.~MyExcel();
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z)
{
test1();
test2();
return 0;
}

Impossible d'utiliser test1 puis test2 l'un après l'autre, pourtant ils fonctionnent très bien séparément.

Si quelqu'un a trouvé un solution je suis preneur.
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Sinon
char *test=(char*)malloc(sizeof(test)); (moins bien que avec New)
ou plus simplement
char test[255];
Afficher les 41 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.