N'avez-vous jamais voulu suivre l'évolution d'un fichier de type "tableur" ?
Et bien, moi, je voulais versionner un tel fichier contenant des chaînes de caractères et leurs traductions. Le projet évoluant, des lignes venait s'insérer à n'importe quel endroit du fichier. J'aurais pu utiliser le format CSV mais je voulais manipuler le document avec un tableur (LibreOffice Calc, par exemple) et je trouvais cela fastidieux de repasser par la phase d'importation à chaque ouverture; je me suis dès lors tourné vers le format "Flat ODS" qui permet de comparer de façon intelligible les différentes versions (car, contrairement au fichier ODS, il n'est pas compressé). Mais je n'étais pas totalement satisfait car beaucoup d'informations inutiles étaient stockées dans le gestionnaire de versions (et venait donc polluer ma comparaison).
Il me vient alors l'idée d'avoir deux fichiers, un fichier CSV et un fichier de mise en forme. L'un serait versionné et l'autre permettrait de l'afficher de manière confortable (de faire du Modèle-Vue, en gros). Le fichier auxiliaire pourrait contenir des préférences utilisateurs sans "contaminer" les données. On pourrait imaginer qu'à l'ouverture du CSV avec le tableur, le programme cherche ce fichier auxiliaire et évite l'import si certaines conditions sont respectées.
En cherchant un peu sur le web, j'ai trouvé ce projet Tabular Data Package qui se rapproche de ce que j'imagine. Mais le but ici est plutôt de lever des ambiguïtés du CSV pour une communication entre machine (si j'ai bien compris).
Alors, chère communauté Linuxfr, est-ce que tu as déjà eu un besoin similaire ? Comment l'as-tu résolu ? Est-ce que mon idée te semble à creuser ?
Merci pour vos retours/commentaires !
# Sinon
Posté par Enzo Bricolo 🛠⚙🛠 . Évalué à 2.
Tu peux utiliser XML et XSLT.
[^] # Re: Sinon
Posté par Jona . Évalué à 1.
Je vois l'idée mais y'a t-il un tableur qui permettrait d'éditer les documents ?
[^] # Re: Sinon
Posté par Thomas Douillard . Évalué à 3.
Tu édites en CSV, tu fais une phase de préprocessing qui te transforme ton CSV en XML dans le code qui fait appel à la feuille de style. Si tu est à l’aise avec XSLT ça peut valoir le coup.
Exemple de transfo possible :
en
# Import ?
Posté par Strash . Évalué à 2.
Je ne comprends pas vraiment de quoi tu parles quand tu dis "phase d'importation". Si ton tableur est bien configuré, il devrait pouvoir ouvrir et manipuler les csv sans avoir à l'importer.
[^] # Re: Import ?
Posté par Jona . Évalué à 3.
Si on considère LibreOffice Calc, non, on a toujours une fenêtre de dialogue d'importation.
Cfr : https://bugs.documentfoundation.org/show_bug.cgi?id=74580
[^] # Re: Import ?
Posté par Vroum . Évalué à 7.
Il est possible de lancer libreoffice sans la boîte de dialogue pour les options d'importation avec
--infilter=...
.Les paramètres de conversion sont peu compréhensibles (surtout pour le CSV) mais rien d'infaisable avec la page suivante:
https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options#Filter_Options_for_the_CSV_Filter
Exemple:
libreoffice --infilter="csv:44,34,76,1" document.csv
[^] # Re: Import ?
Posté par Seb . Évalué à 2.
Le CSV est quand même loin d'être standard. Tu as souvent besoin de préciser les séparateurs, jeux de caractres, typages de colonnes, …
L'import de CSV marche rarement du premier coup.
# SYLK
Posté par François GUÉRIN (Mastodon) . Évalué à 3.
Il existe le format de fichier SYLK qui pourrait parfaitement cnvenir à ton usage:
https://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)
Courage !
[^] # Re: SYLK
Posté par Jona . Évalué à 1.
Merci pour le conseil, je n'avais pas exploré cette solution. Elle a l'air de convenir a mes besoins ! Je vais tester cela.
# traduction?
Posté par devnewton 🍺 (site web personnel) . Évalué à 4.
Pourquoi ne pas utiliser un fichier .properties ou .po pour les traductions?
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
[^] # Re: traduction?
Posté par Jona . Évalué à 1.
Voir ma réponse plus bas.
# .
Posté par guppy . Évalué à 3.
Un fichier de type "tableur", c'est très vague. Et la frontière entre les données et leur présentation est floue : si tu décides d'afficher en rouge les entiers inférieurs à 42, c'est de la présentation, mais la borne c'est de la présentation ou de la donnée ?
Je pense donc que le cas général n'est pas soluble parce qu'insuffisamment spécifié.
Ce besoin me semble nettement plus simple à solutionner. As-tu étudié les solutions du genre Poedit ? Les fichiers
*.po
ou*.pot
sont versionnables et les interfaces sont bien léchées.[^] # Re: .
Posté par Jona . Évalué à 1.
"Un fichier contenant des chaînes de caractères et leurs traductions." mais pas que ça. :-)
De plus, utiliser gettext n'est pas envisageable car je ne maîtrise pas toute la chaîne.
# versioning intégré à LO ?
Posté par kna . Évalué à 2.
Dans Fichiers -> Versions, tu peux enregister plusieurs versions d'un fichier et les comparer (c'est pas aussi facilement lisible qu'un diff sur du texte, mais ça peut être suffisant selon ton besoin). Toutes les versions sont sauvegardées dans le même fichier.
[^] # Re: versioning intégré à LO ?
Posté par Jona . Évalué à 1.
Le versionnage se fait au niveau du projet (avec git). ;-)
# LO + git + XSLT
Posté par benoar . Évalué à 5.
Moi aussi, donc j'ai poussé un peu plus loin : un script XSLT qui efface tout ce bordel inutile, utilisé comme filtre au moment du checkin (gitattributes(1)). Le script en question,
lo-strip-config.xsl
:La fin, c'est la formule « identité » d'XSLT, la « magie » est dans les deux templates vides qui matchent les balises à supprimer.
Ensuite on crée un filtre qui utilise ce script lors du checkin, dans
.git/config
:Et on indique de l'utiliser pour tous les fichiers fodt (c'était pour Document, pas Spreadsheet, dans mon cas, mais le script est agnostique) dans un
.gitattributes
dans le dépôt :Et voilà, tu as ainsi des fichiers LibreOffice « propres » dans ton dépôt.
[^] # Re: LO + git + XSLT
Posté par benoar . Évalué à 2.
Je voulais dire Writer en fait.
# On peut le faire avec LibreOffice Calc ...
Posté par Jean-Baptiste Faure . Évalué à 8.
… mais pas en important le fichier CSV mais en l'insérant avec liaison. Dans la version 6 il faut aller dans le menu Feuille et choisir l'entrée "Insérer une feuille à partir d'un fichier". La première fois on a bien le dialogue d'import du CSV mais ensuite il suffit de recharger le tableur (menu Fichier) quand le fichier CSV a été modifié. On peut se définir un raccourci clavier pour l'action "Recharger".
J'utilise ça pour faire des graphiques à partir d'un fichier texte produit par un code de calcul. J'ai une 1ère feuille qui contient une copie brute du fichier CSV et rien d'autre, une 2e feuille qui contient une copie réorganisée de la première (avec des formules comme =$Feuille1.A1 dans A1) avec des mises en forme qui en améliorent la lisibilité plus des colonnes supplémentaires contenant des formules de calcul, enfin une 3e feuille qui contient des graphiques dont les données sont prises dans la 2e feuille. Si on fait les graphiques directement sur les données brutes de la 1ère feuille, ils sont perdus lors du rechargement du fichier CSV.
Cette technique n'est valable que si LibreOffice Calc sert à visualiser confortablement le fichier CSV. S'il faut aussi le modifier c'est une autre histoire.
[^] # Re: On peut le faire avec LibreOffice Calc ...
Posté par benoar . Évalué à 2. Dernière modification le 25 janvier 2019 à 09:56.
Ah, ça me rappelle une autre technique du même genre, qui permet (de mémoire) également de modifier le CSV : utilise LibreOffice Base (vous savez, le truc auquel on pense jamais), qui permet également de faire une « liaison » avec un CSV. En plus, je pense qu'on peut également lier Base avec Calc pour faire des graphiques comme tu dis ; donc avoir Base pour modifier, et Calc pour visualiser… Bon, c'est à vérifier.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.