IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

de excel vers le C


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 266
    Par défaut de excel vers le C
    bonjour,
    je cherche a faire un programme en C qui ouvre des fichier excel de données boursiere pour calculer des choses.
    Y connaissez vous quelque chose? Sauriez vous me redirigeer?

    merci.

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Salut,

    Tu trouveras la spécification des fichier de type .xls ici: http://www.wotsit.org/

    EN principe, c'est un format propriétaire, et j'ai comme des doutes que sa spécification est le fruit de rétro-ingénieurie (peut poser certains problèmes légaux, mais je ne suis pas un spécialiste).

    Alternatives:
    • Utiliser OpenOffice calc et se baser sur la spécification du format de fichier du tableur qui lui est ouvert
    • Tu peux egalement, depuis Excel, exporter tes données au format CSV (Comma spearted values). Ce type de fichier est relativement facile à manipuler par la suite.


    P.S. Avec matlab, j'avais trouvé des routines xlswrite() et xlsread(), c'est donc que c'est peut-être possible en C. Si c'est possible, je pense que quelqu'un l'a déjà fait et là est ton ami!

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Bon, j'ai pas cherché longtemps, mais il existe un script xls2csv écrit en Perl http://search.cpan.org/~ken/xls2csv-1.06/script/xls2csv ainsi qu'un module Spreadsheet:: ParseExcel, toujours pour Perl. Je suis certain qu'en cherchant bien, tu devrais trouver une API C qui te permet de manipuler des fichiers Excel...

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Je ne sais pas pourquoi cette question revient très souvent, j'ai donc décidé de me pencher sur le problème

    Pour commencer, je te conseille la doc http://www.wotsit.org/download.asp?f=excel qui est un PDF issu du travail réalisé par l'équipe d'OpenOffice.org

    Les choses interessantes semblent commencer à la section 5 Worksheet/Workbook Records (sans oublier le point 1.5 Byte Order où tu apprends que tout est a l'envers !)

    Ensuite tu ouvre ton éditeur héxadécimale, le pdf, ton IDE sans oublier le semi-remorque de café !

    Si tu n'as pas de contraite concernant le format de ton fichier, le plus simple est encore d'utiliser le format CSV

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Bonsoir,

    Citation Envoyé par BernardT
    bonjour,
    je cherche a faire un programme en C qui ouvre des fichier excel de données boursiere pour calculer des choses.
    Y connaissez vous quelque chose? Sauriez vous me redirigeer?

    merci.
    Citation Envoyé par mujigka
    [...] Tu trouveras la spécification des fichier de type .xls ici: http://www.wotsit.org/ [...]
    Citation Envoyé par gege2061
    Pour commencer, je te conseille la doc http://www.wotsit.org/download.asp?f=excel qui est un PDF issu du travail réalisé par l'équipe d'OpenOffice.org [...]
    Vous me paraissez un peu "violents" tous les deux
    Attaquer par le format, comme ça, sans préambule...

    Si le PO est (et sera toujours) sous Windows, il serait probablement plus simple qu'il aille d'abord voir du côté des techno' Microsoft, genre OLE Automation.
    Certes, en C (et c'est MS qui le dit) ce n'est pas gagné :
    Citation Envoyé par [url=http://ask.support.microsoft.com/?scid=kb%3Ben-us%3B181473&x=18&y=9]KB181473[/url]
    If you need to program in C, rather than C++, OLE Automation can be difficult because the Component Object Model (COM), the building blocks of OLE, was designed around the binary layout of a C++ class.
    Mais il fournissent au moins un exemple qui permet de modifier une propriété sous Excel (cf. lien ci-dessus : je vous laisse admirer la simplicité).
    ---- Edit 1 - DEBUT ----
    Je viens de trouver ça, à l'instant, et ça a l'air correct (non testé, j'ai juste jeté un oeil au code) : COM Access Library (apparemment pas mal d'autres choses sympa sur le site).
    ---- Edit 1 - FIN ----

    Citation Envoyé par mujigka
    [...] il existe un script xls2csv écrit en Perl http://search.cpan.org/~ken/xls2csv-1.06/script/xls2csv ainsi qu'un module Spreadsheet:: ParseExcel, toujours pour Perl. Je suis certain qu'en cherchant bien, tu devrais trouver une API C qui te permet de manipuler des fichiers Excel...
    Oui, des choses portables existent. Même en PHP. Mais rien qui donne vraiment l'impression d'être complet/suivi/simple d'après le peu que j'ai vu (j'espère me tromper).

    Personnellement, si je devais écrire quelque-chose de portable et que j'étais forcé de travailler avec des XLS, je jetterai un oeil par ici (je n'ai rien essayé de ce qui suit) :
    http://www.netsw.org/system/libs/ole/cole-2.0.1.tar.gz
    http://www.penguin.cz/~fojtik/cole/cole.htm
    Puis dans le code d'applications qui gèrent déjà le format (ex. : gnumeric, bien avant OOo qui doit être un peu indigeste vu la taille).

    C'étaient mes 2 centimes de la nuit...

    Cordialement,
    DS.

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par David.Schris
    Vous me paraissez un peu "violents" tous les deux
    Attaquer par le format, comme ça, sans préambule...
    .
    J'admets avoir été un peu radical. Comme la question revient souvent, je me suis également baladé sur Google, et je suis tombé sur OLE Automation et des exemples sans MFC ni #import avec C et C++. Les solutions proposées semblent en effet plus compliquées à manipuler en C. Mais cela m'étonnerait qu'il existe pas de "wrapper" de plus haut niveau pour manipuler des feuilles Excel.

    Sinon, les dernières versions de Gnumeric sont fournies avec un utilitaire en ligne de commande appelé ssconvert qui permet de convertir entre différent formats de tableurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssconvert feuille_excel.xls feuille_excel.gnumeric
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssconvert feuille_excel.xls feuille_excel.csv
    Ce convertisseur ne permet pas de convertir plusieurs dans le même fichier csv et ne convertit que la feuille courante.

    Ensuite, une fois le fichier Excel modifié, on peut convertir les fichier csv en retour en passant par le format .gnumeric:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ssconvert feuille_excel.csv feuille_excel.gnumeric
    ssconvert feuille_excel.csv feuille_excel.xls
    A coups de system("ssconvert ...") et de lexture/modification d'un fichier .csv, on devrait pouvoir faire une solution relativement simple (vu la fréquence à laquelle revient la question, je vais réfléchir à des solution portables permettant de manipuler des fichiers Excel et réunir cela dans un tutoriel)..

    Gnumeric est disponible sous Windows, sauf erreur de ma part. Il suffit ensuite que l'utilitaire ssconvert soit dans le %PATH%. Ce n'est certainement pas la manière de faire la plus élégante, mais à court terme, il doit être relativement aisé de mettre en place une solution. Sinon, cela n'engage que moi, mais j'utiliserais plutôt Python pour ce genre de scripts, que C.

    Pour en savoir plus sur la manipulation des fichiers Excel, je pense que le code source de ssconvert doit être une source intéressante de renseignements, et plus ciblée que Gnumeric dans sa totalité. ssconvert n'est disponible que dans les dernières version du logiciel, et je n'ai pas vérifié que cet utilitaire est disponible sous Windows.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  7. #7
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    ssconvert ne permet que de convertir la feuille courante au format .csv. Si c'est une limitation trop important, on peut convertir feuille_excel.xls en un fichier .gnumeric (ssconvert doit être dans le PATH):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("ssconvert feuille_excel.xls feuille_excel.gnumeric");
    Le format .gnumeric est du xml gzippé, qui devrait être beaucoup plus facile à manipuler que du xls binaire.

    [EDIT]
    Après j'arrête, c'est promis: une solution en python qui semble intéressant en Python: pyExcelerator (permet de lire et d'écrire dans les feuilles Excel)
    http://sourceforge.net/projects/pyexcelerator/

    [/EDIT]


    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  8. #8
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par défaut
    Bonjour,

    J'essaye de lire et comprendre chaque post ... mais rien à faire!
    Voila, moi j'essaye de faire pareille, c'est à dire je veux créer un logiciel de Gestion qui me permettrait d'indexer une base de données rempli sur Excel ou même open Office....
    Mais, je n'est aucune idée du cheminement pour essayer de trouver le code que je dois mettre!
    Je n'arrives pas à décoder les liens ...à savoir qu'est ce qui est bon ou ne l'est pas!
    J'utilises Dev c++ ....

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Par défaut
    J'arrive enfin à ouvrir un fichier Excel et word!
    Mais alors, je suis toujours bloqué pour essayer d'importer les données d'un fichier Excel...

Discussions similaires

  1. recuperer 1 graphique excel vers VB
    Par tomgrc dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 25/02/2005, 17h27
  2. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23
  3. Porter une macro Excel vers OpenOffice
    Par totofweb dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 13/07/2004, 13h20
  4. excel vers BD??
    Par goldn77 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 14/06/2004, 11h24
  5. Récupérer des données Excel vers Interbase ...
    Par Djedjeridoo dans le forum InterBase
    Réponses: 2
    Dernier message: 20/07/2003, 18h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo