Exporter fichier CALC au format CSV en C++

Bonjour,
Je mène une analyse pour déterminer la possibilité d’utiliser des fonctions de l’API dans une application écrite en C++ pour la faire évoluer suite à un nouveau besoin.

Le but est de permettre à l’application C++ d’exporter les feuilles de n’importe quel classeur Calc au format CSV.
Dans l’interface de l’application l’utilisateur sélectionne le classeur dont il désire exporter les feuilles.
Pas plus.

J’ai au préalable essayé de chercher dans les différents exemples ou sur le net sans trop de succès.
Je ne suis pas du tout compétent en C++, mais j’aurais aimé avoir un début de piste à suivre pour envisager une évolution de l’application. Si je peux montrer que cela est faisable je pourrai argumenter auprès de mon chef de projet pour dégager un peu de budget.

Quelqu’un de la communauté pourrait-il m’éclairer ?

Bonjour @DR1

Je vois le truc mais je ne suivrais pas cette piste car elle est lourde et impose d’avoir un LibreOffice qui tourne en service sur un serveur (mais tu l’as peut-être déjà).

Il sera sans doute plus souple (et performant) de manipuler directement le xml (xlst ou autre).

Cordialement

Bonjour Pierre-Yves, Merci pour cette première réponse.

J’ai oublié de préciser que le but était également d’utiliser LibreOffice à la place d’Excel et dans cette optique, LO serait déjà installé sur le PC. Par conséquent, cela remet-il en question ta suggestion ? (je veux dire par là, est-ce donc possible de répondre au besoin exprimé à savoir, exporter en CSV les feuilles d’un classeur .ods).

Cordialement.

@DR1 Je dirais que penser utiliser le LibreOffice du pc est encore une moins bonne idée car il peut n’y avoir aucune session (et il faut donc en lancer une) ou un dialogue peut être ouvert (et bloquer la session), où l’usager peut être en train de travailler, etc.

Les document odf sont des archives, un ensemble de dossiers/fichiers xml compressés, donc aisément manipulables. D’autant qu’ici il ne s’agit pas de créer un odf (ce qui pourrait expliquer d’utiliser l’api) mais des fichiers texte.

Cordialement

Merci Pierre-Yves.
Je comprends donc que le principe est d’accéder à l’archive à l’aide de fonctions (SDK ou UNO ???) qui permettent d’extraire les informations de chaque onglet du classeur avec toujours pour même objectif de créer des fichiers CSV sur le disque pour être exploités ensuite par une autre application.

Je viens de découvrir grâce à ta remarque qu’il est possible d’ouvrir un fichier ODS avec 7-zip et voir son contenu. Je n’avais pas compris le principe initial, mais ça colle avec ce que j’avais lu les jours précédents dans différents posts.

A priori le fichier à exploiter pour mon besoin devrait être “Content.xml”. Après une rapide recherche dans ce fichier j’ai pu retrouver le nom des onglets ainsi que certaines informations contenues dans des cellules.

Pourrais-tu orienter ma recherche dans les différentes ressources LibreOffice permettant d’exploiter ces fichiers ?

Des ressources pour exploiter l’odf sont listées sur cette page de notre wiki.

Je ne pratique pas C++ mais je suppose qu’il y a des bibliothèques pour dézipper, voire pour manipuler du xml, lancer des transformations xlst, etc. C’est de ce côté que tu peux chercher, pas dans le sdk ou uno.

Et bien merci beaucoup.

Je vais plonger dans les entrailles du wiki en espérant trouver mon bonheur.
Merci encore pour ton aide.
Bonne journée.