Je veux ajouter des lignes à une table de calcul de libreoffice à partir de la ligne de commande. Mais je ne sais pas comment.
Je viens de comprendre comment démarrer libreoffice en ligne de commande.
Par exemple, ce que cherche iam: -The test.ods-file
before
Name Text
Hans Bla
Christian BlaBlub
J'entre...
ubuntu> [a command -insert] Alf|test -file=test.ods
de sorte que "Alf" et "test" soient ajoutés à la ligne suivante du tableau.
- Le test.ods-file
après:
Name Text
Hans Bla
Christian BlaBlub
Alf test
.ods
est une archive. Vous aurez donc besoin d'extraire l'archive.
De la documentation :
Structure du fichier XML
Les documents au format de fichier OpenDocument sont stockés sous forme d'archives Zip compressées contenant des fichiers XML. Pour afficher ces fichiers XML, vous pouvez ouvrir le fichier OpenDocument avec un programme de décompression. Les fichiers et répertoires suivants sont contenus dans les fichiers OpenDocument:
- Le contenu textuel du document se trouve dans content.xml.
Donc ce n’est pas aussi simple que
[a command -insert] Alf|test -file=test.ods
puisque vous devez également insérer les parties XML.
$ cd ~/tmp/
$ unzip ../test.ods
Archive: test.ods
extracting: mimetype
extracting: Thumbnails/thumbnail.png
inflating: settings.xml
inflating: content.xml
inflating: meta.xml
inflating: styles.xml
inflating: manifest.rdf
creating: Configurations2/images/Bitmaps/
creating: Configurations2/toolpanel/
creating: Configurations2/progressbar/
inflating: Configurations2/accelerator/current.xml
creating: Configurations2/floater/
creating: Configurations2/statusbar/
creating: Configurations2/toolbar/
creating: Configurations2/popupmenu/
creating: Configurations2/menubar/
inflating: META-INF/manifest.xml
Quand vous regardez content.xml et que vous voulez ajouter une nouvelle ligne en dessous de la dernière, vous devez ajouter quelque chose comme ça ...
<table:table-row table:style-name="ro1">
<table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a2a2a2</text:p>
</table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string">
<text:p>b2b2b2</text:p>
</table:table-cell></table:table-row>
avant
<table:named-expressions/>
puis compressez à nouveau les fichiers (Zip -r ../test2.ods .
à partir du répertoire contenant les fichiers).
Résultat:
Pour éditer le fichier à partir de la ligne de commande, j'ai utilisé cette commande. Je mets l'exemple dans ~/Téléchargements et crée un fichier tmp/dans celui-ci pour le tester. Toutes les commandes utilisées pour cela:
cd ~/Downloads/tmp/
unzip ../test.ods
sed 's#</table:table><table:named-expressions/>#<table:table-row table:style-name="ro1"><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a3a3a3</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>b3b3b3</text:p></table:table-cell></table:table-row>&#' content.xml > content2.xml
mv content2.xml content.xml
Zip -r ../test2.ods .
Tout ce que vous avez à faire est de remplacer les segments de texte par les vôtres.
Nouvelle version gracieuseté de Terdon (elle utilise des variables pour la rendre plus lisible):
$ from="</table:table><table:named-expressions/>"
$ to="<table:table-row table:style-name="ro1"><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>a3a3a3</text:p></table:table-cell><table:table-cell office:value-type="string" calcext:value-type="string"><text:p>b3b3b3</text:p></table:table-cell></table:table-row>"
$ sed "s#$from#$to$from#" content.xml
Le "#" est un séparateur. Si vous avez un "#" dans le texte, utilisez autre chose.