[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
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
A voir également:
- [C] envoyer des résultats de C à Excel
- Liste déroulante excel - Guide
- Aller à la ligne excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Excel additionner des cellules - Guide
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
15 juil. 2008 à 13:31
Je ne connais,pas l'utilisation de excel en C mais ta doc c'est pour du C++
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
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
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
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
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 ?
A ton avis ta méthode devrait marcher avec n'importe quel compilateur C ?
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
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
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
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
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.
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
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
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
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
16 juil. 2008 à 12:16
il faut créer un fichier csv, pas xls et il faut l'importer.
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
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);
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);
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
16 juil. 2008 à 12:33
C'est quoi comme type Total, c'est du char*?
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
16 juil. 2008 à 12:35
Il est défini en tant qu'int.
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
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.
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.
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
16 juil. 2008 à 12:54
Tu peux m'expliquer ce que tu veux dire par 'le faire en dynamique'?
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
16 juil. 2008 à 13:19
Je parlais de gérer la taille de ta phrase dynamiquement avec
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.
mallocet
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.
15 juil. 2008 à 13:48