[C] envoyer des résultats de C à Excel

Fermé
XeN3009 Messages postés 8 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 16 juillet 2008 - 15 juil. 2008 à 12:20
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 - 16 juil. 2008 à 13:19
Bonjour,

Je suis actuellement en stage et on me demande de coder des opérations mathématiques sous
C et d'envoyer le résultat sur Excel!

J'ai trouvé une petite doc là dessus mais j'y comprends rien!!!!
Voici le lien:

http://66.102.9.104/search?q=cache:eeMzyu8tFjQJ:www.univ-evry.fr/pdf/perreira/Excel_cpp.ppt+dll+pour+passer+une+fonction+de+C+%C3%A0+excel&hl=en&ct=clnk&cd=4&client=firefox-a

Et est ce que quelqu'un connait un compilateur qui permet de faire ça?

Merci d'avance
A voir également:

6 réponses

mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
15 juil. 2008 à 13:31
Je ne connais,pas l'utilisation de excel en C mais ta doc c'est pour du C++
0
XeN3009 Messages postés 8 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 16 juillet 2008
15 juil. 2008 à 13:48
Effectivement, mais c'est tout ce que j'ai pu trouver sur la question....
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
15 juil. 2008 à 13:52
Tu peux faire comme un fichier texte:

FILE *f;
f = fopen(<chemin>, <attribut>); //permet de créer un flux vers le chemin possédant des capacités données par l'attribut

a la place de <chemin >: chemin en chaîne caractère "c:\\xxxx\\xxxx\\xxxx.xls ( ne pas oublier de doubler les \ --> \\)

a la place de <attribut>:
"r"pour lecture
"w" pour ecriture (ecrase les donnée presentes dans le fichier)
"a" pour ajout

fgets ou fputs pour lire ou ecrire.

fclose(f) pour fermer le flux.


Il te reste à trouver une fonction pour positionner le curseur avant la lecture ou l'écriture.
Chaque espace marque le début d'une nouvelle cellule il me semble il ne reste plus qu'à jouer avec ça pour faire ce que tu veux.
Cela doit pas être le moyen le plus simple mais c'est le seul que je connaisse.Si il y a mieux j'aimerai apprendre.

Mich
0
XeN3009 Messages postés 8 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 16 juillet 2008
15 juil. 2008 à 14:07
Merci pour ta réponse, je vais essayer pour voir ce que ça donne!
A ton avis ta méthode devrait marcher avec n'importe quel compilateur C ?
0
XeN3009 Messages postés 8 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 16 juillet 2008
15 juil. 2008 à 15:16
Tu pourrais me donner quelques indications sur la fonction 'fputs'
prenons un exemple: un code qui effectue une opération 'a+b' où a et b sont des paramètres demandé à l'utilisateur en entrée. Le résultat est ensuite envoyé sur excel => comment tu coderais la fonction fputs pour effectuer cette opération?
Merci d'avance
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 622
15 juil. 2008 à 15:21
si c'est les résultats qui doivent être envoyés dans Excel, tout écrire dans un fichier .csv en séparant les valeurs par virgule ou tab. Ce fichier pourra être importé dans Excel.
0
XeN3009 Messages postés 8 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 16 juillet 2008
16 juil. 2008 à 10:38
J'ai créé un programme bidon qui fait toutes sortes d'opérations élémentaires, ensuite, je récupère le résultat et je le mets dans un fichier 'xls' ou 'csv' comme expliqué plus haut.
Le fichier excel existe mais le résultat n'est pas le résultat escompté! A l'intérieur du fichier il y 'a un caractère bizarre qui ressemble à un carré?!
Si quelqu'un pouvait m'aider pour le code ou qui connait une autre méthode ça serait gentil!
Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 622
16 juil. 2008 à 12:16
il faut créer un fichier csv, pas xls et il faut l'importer.
0
XeN3009 Messages postés 8 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 16 juillet 2008
16 juil. 2008 à 12:20
qu'est ce que tu entends par l'importer? Quelques détails svp...
Voici la partie du code où je crée le fichier .csv et où j'écris dedans:

FILE *fp;
fp = fopen("C:\\programmation\\excel\\test.csv","w");
fputc(Total, fp);
fclose(fp);
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6 > XeN3009 Messages postés 8 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 16 juillet 2008
16 juil. 2008 à 12:33
C'est quoi comme type Total, c'est du char*?
0
XeN3009 Messages postés 8 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 16 juillet 2008 > mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010
16 juil. 2008 à 12:35
Il est défini en tant qu'int.
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
16 juil. 2008 à 12:49
int fputs(const char *s, FILE *stream);

Cela doit être un char* constant et cela retourne le nombre de caractère écrit dans le fichier.

Donc il faut que tu convertisses ton int en char* et je ne sais pas faire facilement en C , je ne sais pas si il y a une librairie faite pour.

Attention il me semble que dans un cas similaire j'ai du changé la déclaration à cause du fputs:
Mettre char* Total; //variable ou tu mets l'équivalent du résultat en caractère, et si fputs pose problème:

char Total[100]; //pareil sauf que c'est un tableau (cela règle un problème d'allocation) ou faire en dynamique

Enfin pour ce qui est d'Excel par contre j'en sais rien.

0
XeN3009 Messages postés 8 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 16 juillet 2008
16 juil. 2008 à 12:54
Tu peux m'expliquer ce que tu veux dire par 'le faire en dynamique'?
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6 > XeN3009 Messages postés 8 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 16 juillet 2008
16 juil. 2008 à 13:19
Je parlais de gérer la taille de ta phrase dynamiquement avec
malloc
et
delete
.
Cette technique, contrairement au tableau qui garde la zone mémoire dès la déclaration, permet d'allouer cette zone mémoire juste à l'instant où en a besoin ce qui permet de connaître la taille nécessaire à allouer et de ne pas en réserver de trop.

L'avantage des tableaux et de l'allocation dynamique dans ton cas est une histoire d'allocation qui force la variable à être constante pour que la fonction puisse fonctionner sans que la taille de la phrase ne la gêne.Or si tu utilises fputs dans une autre fonction prenant la phrase en argument, elle ne sera pas considéré comme de taille constante comme on peut mettre n'importe quoi en argument et la compilation echouera.

C'est comme ça que l'on m'a expliqué mon problème, j'espère ne pas trop t'embrouiller ni trop me tromper dans les explications.
0